2013-06-06 15 views
5

Java app sınıfyolumda, "seq = 10" ile "seq = 17" arasında her an değişebilen bir tracking.properties dosyam var.Git deposundaki bir dosyayı ilk işlemden sonra yapılan işlemlerden nasıl koruyabilirim?

Özellik dosyası şimdi github deposuna yerleştirilmiştir. Umarım bu dosya depoda bulunur, böylece diğer geliştiriciler bunu klonlayabilir ve dosya, "seq" 'in kullanıcıdan kullanıcıya değişebileceğinden dolayı itilmez.

Sonra .gitignore için tracking.properties eklemek
git rm --cached -f <file> 

çalıştı, ama git deposunda mülkiyet dosyasını deleteing sonuçlanır. Orada kalmalı ve sadece ONCE-FOR-ALL taahhüdüne izin verilmelidir. Mümkün mü?

cevap

3

Bunun için "şablon" desenini kullanmayı düşünün.

Dosyayı tracking.properties.template olarak denetleyin ve tracking.properties numaranızı .gitignore numaranıza ekleyin. Ardından, depoyu kontrol ettikten sonra, geliştiriciler şablon dosyasını tracking.properties'a kopyalamalı ve ardından istedikleri gibi düzenlemelidir. Bu dosya yok sayılacak ve dosya kirli görünmeyecek ve geliştiricilerin değişiklik yapması beklenmeyecek.

Bu, şablon dosyasının değişmesini engellemez, ancak bu iyi bir şey olabilir - ileride değişiklikler yapmanız gerekebilir. Önemli olan, tracking.properties için yalnızca yerel değişikliklerin çok fazla karışıklık olmadan mümkün olmasıdır. Her geliştirici buna sahip olsa bile, yerel olarak değişmemiş sanki sonsuza sonra dosyayı ele alır sonra budala repo

git update-index --skip-worktree tracking.properties 

klonlama sonra bu komutu çalışıyorsa

+0

Bu, geliştiriciler için kesinlikle güzel. Ama benim app klonlanmış (aynı zamanda bir klon) indirgeyici olmayanlar da artık klonlanmış olması bekleniyor ve onları kopyalamak ve mümkün olduğunca bir dosya yeniden adlandırmak için zorlamak istemiyorum ... Daha başka bir otomatik yöntem var mı ? – linzhixing

+0

@linzhixing Dosyada bir şeyi değiştirmeleri gerekiyorsa, belgelemek için daha fazla bir şey değil. Git'in "değişmeyen izlenen dosya" için bir kavramı yok - bir dosya izleniyor veya değil. Eğer bir çeşit kurulum senaryosu varsa, senaryosunun kopyasını yapmakla ilgilenmesini sağlayabilirsiniz. Aksi halde, adımı belgeleyebilirsiniz. – cdhowie

+0

Teşekkürler! Sonunda, seup kabuk betiğine cp komutu ekledim. – linzhixing

2

. Hiç bunu yerel değişiklikleri kaydetmek gerekmiyorsa

, bu

git update-index --no-skip-worktree tracking.properties 

gibi normale döndü açabilirsiniz Diğer bir alternatif

git update-index --assume-unchanged tracking.properties 

Here is a good explanation of the subtle differences between skip-worktree and assume-unchanged olduğunu. Bence skip-worktree sizin için daha iyidir, çünkü reset --hard'u göz ardı eder ve yukarı akış versiyonu değiştiğinde bayrağı korur.

İlgili konular