2011-09-08 29 views
7

Sana bir depoya hiçbir gerçek dosya değişikliklerle taahhüt koymakdosyaları

git commit --allow-empty 

kullanabileceğinizi biliyor boş bir budala taahhüt İlişkilendirin.

Sahip olduğum sorun, depodaki çeşitli dosya (lar) ile ilişkilendirilmiş boş işleri oluşturabilmem gerektiğidir. Diğer bir deyişle, ben

git log -- <filename> 

taahhüt gösterecektir sunduğu birçok boş kaydedilmesini koymak için isterler, ama bunu yapmanın bir yolunu olamaz.

Teşekkürler! git log --help itibaren

+5

Tanıma göre boş bir işlem herhangi bir dosyayla ilgili değil mi? Tam olarak ne yapmaya çalışıyorsun? –

+0

@Jeff: Boş bir işlem yapmak için ne kullanıyor? –

+0

@Carl Belirli dosyalar ile ilgili boş bir işlem yapmaya çalışıyorum. – Jeff

cevap

7

:

[--] <path>... 
    Show only commits that affect any of the specified paths. 

Bir o belirtilen yolları etkilemez yapar taahhüt göstermek git log <path>... istiyorum. Bu olmayacak.

Yapabilecekleriniz, dosya adlarını taahhüt mesajına yazıp git log --grep=<filename> kullanın.

Belki de taahhüt mesajında ​​istemiyor musunuz? Ardından taahhüt notlarına koyun: git notes add -m <filename>. Notlar için grep'e küçük bir betik yazmanız gerekebilir, ancak git su tesisatı bunu oldukça kolay hale getirmelidir.

+0

'Git günlüğünün 'davranışının değişmesini istemiyorum - etkilenen yolları göstermesini istiyorum. Aradığım şey, yola X'in boş bir işlem için etkilenen yolunu düşünmesini söylemek için bir yol. – Jeff

+1

@Jeff: @drizzd ve Carl Norum oldukça doğrudur - boş bir taahhüt (bu anlamda) * tanım gereği * hiçbir değişiklik getirmez, dolayısıyla "etkilenen yollar" yoktur. Git günlüğünün davranışını değiştirmeden istediğin şeyi yapmanın bir yolu yok. –

+0

Niçin 'git log' den de bahsettiğinizden emin değilim, ama dediğim gibi, davranışlarını değiştirmek istemiyorum. Beklediğim şey, sapın null olsa bile, etkilenmeyi etkilenen bazı yolları işaretlemesinin bir yolu olduğunu söyledi.Sonra diğer tüm 'git' alt komutları,' git log' dahil olmak üzere, etkilenen yolları gösterme açısından doğru şeyi yapardı. – Jeff

5

Bunun yapılamamasının nedeni, gitme işleminin bu noktada projedeki tüm dosyaların durumunun bir anlık görüntüsüdür ve etkilenen dosyalar, bir işlemi karşılaştırarak daha sonra çıkarılan ebeveynine. (Etkilenen dosyalar, ikisi arasında farklılık gösteren dosyalardır.) Bu nedenle, bir yolu yapay olarak etkilenen olarak işaretlemenin bir yolu yoktur, çünkü bu işlem doğrudan bu bilgileri depolamaz.

Yapabileceğin bir şey, dosya içeriğinin aynı olmasına rağmen, değiştirilebilecek dosya izinlerini (sözde, grup yazılabilir olarak ayarlanmış veya ayarlanmamış) değiştirmektir. Ve her zaman iki bitişik işleminiz olabilir - bunlardan biri izinleri değiştirir ve diğeri bunları değiştirir - eğer izinlerin değişmesini istemiyorsanız. Biraz dağınık, ama özellikle dosya izinleri sizin durumunuzda önemli değilse işe yarayacaktır.