Yanıtlar:
--follow
Belirli 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 .
--follow
git log -- path
--follow
bir 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 filename
dosya yeniden adlandırma izleyin o ilgili tüm kaydedilmesini gösterecektir yani gelmez dosya (gerçek değil dosyası). Dosyaları oluşturursanız X
ve Y
her iki değişti, sonra silinir Y
ve yeniden adlandırılmış X
için Y
ve sonra da bunu değişti ve çalıştırmak git log Y
her ikisi için mesajlar alacak, eski Y
ve yeni biri. Ve ile zıt, --follow
size o seçildi zaman bu dosyayı ilgili kaydedilmesini alacak X
ve o seçildi zaman Y
.
git log path
ne istersen yapmalısın. Gönderen git log
adam :
[--] <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 log
ve 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 -- filename
veya sadece git log --all -- filename
tü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.
-p
tam 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 upperLimit
olduğunu start_line_number
ve lowerLimit
birending_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ı, --follow
sadece tek bir dosya için çalışıyor olmasıdır.
--follow
bir 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
git
başlayanlar için: git log -p --follow -- filename
Değ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 filename
ve 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.
gitk
iç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 b7c4f0d7
en 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>