Yanıtlar:
--followBelirli bir dosya için çalışmalar
git log --follow -- filename
Verilen diğer çözümlere göre farklılık
Diğer çözümlerin git log path(içermeyen --follow) olduğunu unutmayın. Bu yaklaşım, örneğin bir dizindeki değişiklikleri izlemek istiyorsanız , ancak dosyalar yeniden adlandırıldığında tökezliyorsa (bu nedenle kullanın --follow filename) kullanışlı olur .
--followgit log -- path
--followbir yolu kabul ettiğini unutmayın . İkincisi durumunda, özyinelemeli olarak çalışacak ve değişiklikleri bu noktanın altındaki tüm dosyalara bildirecektir. (Bu davranış kılavuzda belgelenmemiştir ve kalıcı olmayabilir.)
git log filename?
git log filenamedosya yeniden adlandırma izleyin o ilgili tüm kaydedilmesini gösterecektir yani gelmez dosya (gerçek değil dosyası). Dosyaları oluşturursanız Xve Yher iki değişti, sonra silinir Yve yeniden adlandırılmış Xiçin Yve sonra da bunu değişti ve çalıştırmak git log Yher ikisi için mesajlar alacak, eski Y ve yeni biri. Ve ile zıt, --followsize o seçildi zaman bu dosyayı ilgili kaydedilmesini alacak X ve o seçildi zaman Y.
git log pathne istersen yapmalısın. Gönderen git logadam :
[--] <path>…
Show only commits that affect any of the specified paths. To prevent confusion with
options and branch names, paths may need to be prefixed with "-- " to separate them
from options or refnames.
Buna yakından bakıyorum ve tüm bu cevaplar bana tüm şubelerdeki tüm taahhütleri göstermiyor gibi görünüyor.
İşte gitk düzenleme görünümü seçenekleri ile uğraşarak ne ile geldi. Bu bana şube, yerel, reflog ve uzaktan bakılmaksızın tüm dosya taahhütlerini gösterir .
gitk --all --first-parent --remotes --reflog --author-date-order -- filename
Ayrıca aşağıdakilerle çalışır git log:
git log --all --first-parent --remotes --reflog --author-date-order -- filename
--reflog/ rebased tadil veya başka atıldı kaydedilmesini içerir. Belki bu açık olmalı, ama bunu ile kullanmayı denedim git logve neden yinelenen taahhütleri gördüğümü anlamaya çalışıyordum!
Belirli bir dosya için taahhüt almak için aşağıdaki komutu kullanın:
git log -p filename
git log -p mybranch -- filenameveya sadece git log --all -- filenametüm şubelere bakmak için kullanın .
Bu kadar basit olmalı git log <somepath>; sayfayı kontrol edin ( git-log(1)).
Şahsen kullanmaktan hoşlanıyorum, git log --stat <path>böylece her taahhüdün dosya üzerindeki etkisini görebiliyorum.
-ptam farkı görmek isteseniz bile , sadece birkaç satır değiştirildiğinden değil.
git showönemli gibi görünen belirli taahhütlerde bir günlük alabilirsiniz .
Alternatif olarak (Git 1.8.4'ten beri), bir dosyanın belirli bir bölümünü değiştiren tüm taahhütleri almak da mümkündür . Bunu başlangıç çizgisini ve bitiş çizgisi numarasını ileterek alabilirsiniz.
Döndürülen sonuç, bu bölümü değiştiren taahhütlerin listesi olacaktır. Komut şöyle gider:
git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>
nerede upperLimitolduğunu start_line_numberve lowerLimitbirending_line_number
Daha Fazla Bilgi - https://www.techpurohit.com/list-some-useful-git-commands
Jackrabb1t'ın işaret ettiği gibi --follow, geçmişi yeniden adlandırma / hamlelerin ötesinde listelemeye devam ettiği için daha sağlamdır. Dolayısıyla, şu anda aynı yolda olmayan bir dosyayı veya çeşitli işlemlerde yeniden adlandırılmış bir dosyayı arıyorsanız, --follow dosyayı izler.
Ad / yol değişikliklerini görselleştirmek istiyorsanız bu daha iyi bir seçenek olabilir:
git log --follow --name-status -- <path>
Ancak, yalnızca önemli olan daha kompakt bir liste istiyorsanız:
git log --follow --name-status --format='%H' -- <path>
ya da
git log --follow --name-only --format='%H' -- <path>
Dezavantajı, --followsadece tek bir dosya için çalışıyor olmasıdır.
--followbir dizin olabilen tek bir yol için çalışır . Bir dizini geçtiyse, özyinelemeli olarak çalışır ve değişiklikleri bu noktanın altındaki tüm dosyalara bildirir.
Önceki bir kullanımda silinen bir dosyayı takip etmeye çalışıyorsanız
git log --follow -- filename
gitbaşlayanlar için: git log -p --follow -- filenameDeğişiklikleri de görüntülemek için kullanın . Ayrıca not: "dosyaadı" bir dosya, bir dizin veya bir alt modül olabilir.
Bir dosyayı değiştiren tüm taahhütleri görüntülemek istiyorsanız, tüm şubelerde şunu kullanın:
git log --follow --all <filepath>
Eğer bütün kaydedilmesini bakmak istiyorsanız filenameve vermeyerek filepath , kullanım:
git log --all -- '*.wmv'
Belirli bir dosyayı değiştiren işlemlerde yapılan tüm değişiklikleri görmek istiyorsanız (yalnızca dosyanın kendisindeki değişiklikler yerine) şunları iletebilirsiniz --full-diff:
git log -p --full-diff [branch] -- <path>
[branch]
gitk <path_to_filename>
"Gitk" paketinin kurulu olduğu varsayılarak.
Yüklü değilse, şunları yapın:
sudo apt-get install gitk
Ve sonra yukarıdaki komutu deneyin. Linux içindir ... Bir GUI istiyorsa Linux kullanıcılarına yardımcı olabilir.
gitkiçin, Windows için Git ile birlikte geldiğini unutmayın .
Sadece sağlama karmalarının bir listesini almak için git rev-list
git rev-list HEAD <filename>
Çıktı:
b7c4f0d7ebc3e4c61155c76b5ebc940e697600b1
e3920ac6c08a4502d1c27cea157750bd978b6443
ea62422870ea51ef21d1629420c6441927b0d3ea
4b1eb462b74c309053909ab83451e42a7239c0db
4df2b0b581e55f3d41381f035c0c2c9bd31ee98d
yani 5 dosya bu dosyaya dokundu. Ters kronolojik sıra, bu yüzden listedeki ilk taahhüt b7c4f0d7en son olanı.
Linux'ta bunun için gitk kullanabilirsiniz.
"Sudo apt-get install git-gui gitk" kullanılarak kurulabilir. Belirli bir dosyanın işleyişini "gitk <Filename>" ile görmek için kullanılabilir.
# Shows commit history with patch
git log -p -<no_of_commits> --follow <file_name>
# Shows brief details like "1 file changed, 6 insertions(+), 1 deletion(-)"
git log --stat --follow <file_name>