Git suçlama geçmişi göstermiyor


88

Git blame'ı bir dosyada çalıştırdığımda (msysgit kullanarak) her zaman aşağıdaki tür çıktılar alıyorum:

00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   1) package co
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   2) {
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   3)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   4)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   5)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   6)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   7)      impor

yani tüm satırları Henüz İşlenmemiş olarak gösterir.

Bunu birçok kaydetme içeren birçok dosyada denedim - her zaman aynı sonuçlar. Ayrıca göreceli / tam yolu kullanmayı denedim, ancak hiçbir fark yaratmıyor gibi görünüyor.

TortoiseGit'in suçunu kullanmaya çalıştığımda, her satırın her satırın ilk işlemde en son işlendiğini gösteriyor:

alternatif metin

hatta, söylediğim gibi, bu dosyaların tarihinde aslında onlarca işlem var ..

Fikirler?

Düzenle - Daha Fazla Bilgi

  • Git blame, bu deponun barındırıldığı GitHub'da sorunsuz çalışıyor.
  • Ayrıca onu bir linux makinesine klonlarsam ve suçu orada yaparsam iyi çalışıyor
  • Görünüşe göre sadece msysgit'te bu işe yaramıyor

Benim için bu sorun, deponun tanıdığı bir yola sembolik bağlantılı bir yolun uygulanmasından kaynaklanıyordu, bu yüzden dosyanın tamamen yeni olduğunu düşünüyordu.
Kzqai

Not: Git 2.0.1'den (25 Haziran 2014) itibaren git blame, tüm bu "Henüz Taahhüt Edilmedi" satırlarını bildirmeyi bırakmalıdır. Aşağıdaki cevabımı
VonC


Bu aynı zamanda WSL'yi de etkiliyor, bu yüzden etiketi ekledim. Umarım sorun olmaz.
mikemaccana

Yanıtlar:


127

git blame file.txtçalışan kopyanızdaki file.txt sürümünü suçluyor. File.txt, depoda Windows satır başlarına (CRLF) sahipse ve sizde varsa core.autocrlf = true, her file.txt satırı farklı kabul edilecek ve git blamehenüz kaydedilmemiş olarak raporlanacaktır .

Sebebi git blame <my_branch>(hatta daha iyi git blame HEAD, ne şube sende olursa olsun çalışır), işler henüz işlenen değil hatları için hiçbir potansiyel var yani çalışma kopyası sürümü suçlamak olmamasıdır.


118
git blame -wbeyaz
boşluğu

13
Git blame -w ayrı bir cevap ve kabul edilen cevap olmalıdır;). Yorumsuz kabul edilen cevap benim için faydasızdı.
Guillaume Perrot

55

Çözümü buldum - çok garip.

Bunu çalıştırırsam:

git blame file.txt

Yukarıda belirtildiği gibi geçmiş bozulmuştur.

Bunun yerine bunu yaparsam:

git blame my_branch file.txt

İşe yarıyor!

Bu çok garip, çünkü AFAICS kullanımı bir şube adı gerektirmiyor:

$ git blame
usage: git blame [options] [rev-opts] [rev] [--] file

7
Bu benim için çalışıyor, yayınladığınız için teşekkürler. Bunu cevap IMO olarak işaretlemelisiniz.
wes

Bu benim için msysgit olarak çalışıyor ancak dosya adı büyük / küçük harfe duyarlıdır. Böylece yazabilirim git blame mybranch cmakelists.txtve başarısız olur; ama yazarsam git blame mybranch CMakeLists.txtişe yarayacak.
döngü

Katılıyorum wes; suçlama, şubeyi belirtene kadar hiçbir geçmiş göstermemekti ve bu, belgelerle tutarsızdı.
josephdpurcell


8

Git 2.0.1'den (25 Haziran 2014) itibaren git blame, tüm bu "Henüz İşlenmedi" satırlarını bildirmeyi bırakmalıdır.

Bkz. Commit 4d4813a (26 Nisan 2014), brian m. carlson ( bk2204) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde e934c67 tamamlama 2014 06 Haz)

blame: dosyaları ne olursa olsun doğru şekilde işleyin autocrlf

Bir dosya CRLFbir arşivde ile satır sonları içeriyorsa , değiştirilmemiş olsalar bile core.autocrlf=inputher zaman " Not Committed Yet" olarak işaretlenen satırları suçlayın.
Sahte kesinleştirme oluştururken satır sonlarını dönüştürmeye çalışmayın, böylece autocrlfayardan bağımsız olarak suçlama doğru çalışır .


8
Hala git
v2.1.3'te

Git sürüm 2.16.1.windows.1
Radon8472

@ Radon8472 Çıktınızla birlikte sorunu gösteren yeni bir soru ekleyebilir misiniz git config -l(ve bu cevaba giden bir bağlantı): bu, benim ve diğerlerinin sorunun devam edip etmediğini denememize ve görmelerine izin verecek.
VonC

1

Başka bir olasılık: büyük / küçük harfe duyarlı dosya adı yazım hatası

Git blame file.txt ile aynı sorunu yaşadım, sonra file.txt ile büyük / küçük harfe duyarlı bir dosya adı yazım hatası yaptığımı fark ettim.

File.txt olarak değiştirdim (örneğin) ve my_branch'ı belirtmek zorunda kalmadan beklenen sonuçları aldım: git blame File.txt

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.