Birleştirme işlemlerinde gizlenen değişiklikler için
Birleştirme işlemlerinin değişiklikleri Git günlük çıktısından otomatik olarak gizlenir. Hem kazma hem de ters suçlama değişikliği bulamadı. Böylece istediğim çizgi eklendi ve daha sonra kaldırıldı ve onu kaldıran birleştirmeyi bulmak istedim. Dosya git log -p -- path/filegeçmişi yalnızca eklendiğini gösterdi. İşte onu bulmanın en iyi yolu:
git log -p -U9999 -- path/file
Değişikliği arayın, ardından "^ commit" için geriye doğru arama yapın - ilk "^ commit", dosyanın en son bu satıra sahip olduğu işlemdir. İkinci "^ taahhüt" kaybolduktan sonradır. İkinci taahhüt, onu kaldıran komisyon olabilir. Bunun -U9999anlamı, dosyalarınızın en fazla 9999 satır olduğu varsayılarak (dosyanın her değiştirilmesinden sonra) dosya içeriğinin tamamını göstermek içindir.
Kaba kuvvet yoluyla ilgili birleşmeleri bulur (ton başına verilen taahhütlere karşı çalışan ilk ebeveyni ile olası her birleştirme taahhüdünü ayırır)
git log --merges --pretty=format:"git diff %h^...%h | grep target_text" HEAD ^$(git merge-base A B) | sh -v 2>&1 | less
(Revizyon filtresini daha fazla kısıtlamaya çalıştım, ancak sorunla karşılaştım ve bunu önermiyorum. Aradığım ekleme / kaldırma değişiklikleri, farklı zamanlarda birleştirilen farklı dallardaydı ve A ... B içermiyordu değişiklikler aslında ana hatta birleştirildiğinde.)
Bu iki işlemle Git ağacını göster (ve karmaşık Git geçmişinin birçoğu kaldırıldı):
git log --graph --oneline A B ^$(git merge-base A B)
(A yukarıdaki ilk taahhüttür, B yukarıdaki ikinci taahhüttür)
A tarihini ve B eksi geçmişini A ve B tarihini göster.
Alternatif sürüm (yolu normal Git geçmiş ağacından ziyade daha doğrusal gösteriyor gibi görünüyor - ancak normal git geçmişi ağacını tercih ediyorum):
git log --graph --oneline A...B
Üç değil, iki nokta - üç nokta, "r1 r2 - not $ (git merge-base --all r1 r2) anlamına gelir. R1 (sol taraf) veya r2 (sağ) ancak her ikisinden de değil. " - kaynak: "man gitrevisions"
git log -S<string> /path/to/filebir istediği-cya-ccbirleştirme sırasında kaldırma göstermek için de (çakışma)