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.