Git đổ lỗi không hiển thị lịch sử


88

Khi tôi chạy lỗi git trên một tệp (sử dụng msysgit), tôi luôn nhận được loại bản in sau:

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

tức là nó hiển thị tất cả các dòng là Chưa cam kết.

Tôi đã thử điều này trên nhiều tệp, có nhiều cam kết - kết quả luôn giống nhau. Tôi cũng đã thử sử dụng đường dẫn tương đối / đầy đủ, nhưng nó dường như không tạo ra sự khác biệt.

Khi tôi cố gắng sử dụng lỗi của TortoiseGit, nó luôn hiển thị mọi dòng là được cam kết cuối cùng ở lần cam kết đầu tiên:

văn bản thay thế

thậm chí nghĩ, như tôi đã nói, thực sự có hàng chục cam kết trong lịch sử của những tệp này ..

Ý tưởng?

Chỉnh sửa - Thông tin khác

  • Git bluits hoạt động tốt trên GitHub, nơi lưu trữ kho lưu trữ này.
  • Nó cũng hoạt động tốt nếu tôi sao chép nó vào một máy linux và đổ lỗi ở đó
  • Có vẻ như chỉ trên msysgit điều này không hoạt động

Đối với tôi, vấn đề này là do sử dụng một đường dẫn được liên kết tượng trưng như được nối với đường dẫn mà kho lưu trữ nhận ra, vì vậy nó nghĩ rằng tệp hoàn toàn mới.
Kzqai

Lưu ý: Bắt đầu từ git 2.0.1 (ngày 25 tháng 6 năm 2014), git đổ lỗi sẽ ngừng báo cáo tất cả các dòng "Chưa cam kết". Xem câu trả lời của tôi bên dưới
VonC

Trên danh sách gửi thư: git.661346.n2.nabble.com/… Cũng xảy ra trên Linux.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Điều này cũng ảnh hưởng đến WSL, vì vậy tôi đã thêm thẻ. Hy vọng là ổn.
mikemaccana

Câu trả lời:


126

git blame file.txtđổ lỗi cho phiên bản file.txt trong bản sao làm việc của bạn. Nếu file.txt có Windows-newlines (CRLF) trong repo và bạn có core.autocrlf = true, thì mọi dòng của file.txt sẽ được coi là khác và sẽ được báo cáo git blamelà chưa được cam kết.

Lý do tại sao git blame <my_branch>(hoặc thậm chí tốt hơn git blame HEAD, hoạt động cho dù bạn đang ở nhánh nào) hoạt động, là nó không đổ lỗi cho phiên bản sao chép đang hoạt động nên không có khả năng xảy ra các dòng chưa được cam kết.


117
git blame -wbỏ qua các khoảng trắng, vì vậy bạn vẫn có thể đổ lỗi so với bản sao làm việc nếu muốn
Kyle Heironimus

13
Git đổ lỗi -w nên là một câu trả lời riêng biệt và một câu trả lời được chấp nhận;). Câu trả lời được chấp nhận mà không có bình luận là vô ích đối với tôi.
Guillaume Perrot

55

Đã tìm ra giải pháp - rất kỳ lạ.

Nếu tôi chạy cái này:

git blame file.txt

Lịch sử bị phá vỡ, như đã đăng ở trên.

Nếu tôi làm điều này thay thế:

git blame my_branch file.txt

Nó hoạt động!

Điều này rất kỳ lạ, bởi vì AFAICS cách sử dụng không yêu cầu tên chi nhánh:

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

7
Điều này làm việc cho tôi, cảm ơn vì đã đăng nó. Bạn nên đánh dấu câu trả lời này là IMO câu trả lời.
wes

Điều này hoạt động đối với tôi trong msysgit nhưng tên tệp phân biệt chữ hoa chữ thường. Vì vậy, tôi có thể viết git blame mybranch cmakelists.txtvà nó sẽ thất bại; nhưng nếu tôi viết git blame mybranch CMakeLists.txtnó sẽ hoạt động.
loop

Tôi đồng ý, wes; lỗi là không hiển thị lịch sử cho đến khi tôi chỉ định nhánh và điều đó không phù hợp với tài liệu.
josephdpurcell


8

Bắt đầu từ git 2.0.1 (ngày 25 tháng 6 năm 2014), git đổ lỗi sẽ ngừng báo cáo tất cả những dòng "Chưa cam kết".

Xem cam kết 4d4813a (26 tháng 4 năm 2014) bởi brian m. carlson ( bk2204) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster- in commit e934c67 , 06/06/2014)

blame: xử lý chính xác các tệp bất kể autocrlf

Nếu một tệp chứa CRLFphần cuối dòng trong kho lưu trữ bằng core.autocrlf=input, thì hãy đổ lỗi cho các dòng luôn được đánh dấu là " Not Committed Yet", ngay cả khi chúng chưa được sửa đổi.
Đừng cố gắng chuyển đổi các phần cuối của dòng khi tạo cam kết giả để lỗi đó hoạt động chính xác bất kể autocrlfcài đặt nào.


8
Tôi vẫn gặp sự cố trong git v2.1.3
DBedrenko

Tôi gặp sự cố với git phiên bản 2.16.1.windows.1
Radon8472

@ Radon8472 Bạn có thể thêm một câu hỏi mới minh họa sự cố, với git config -lđầu ra của bạn (và một liên kết quay lại câu trả lời này): điều đó sẽ cho phép tôi và những người khác thử xem sự cố vẫn tiếp diễn.
VonC

1

Một khả năng khác: lỗi đánh máy tên tệp phân biệt chữ hoa chữ thường

Tôi đã gặp vấn đề tương tự với git đổ lỗi cho tệp.txt, sau đó nhận ra rằng tôi đã tạo lỗi đánh máy tên tệp phân biệt chữ hoa chữ thường với tệp.txt

Đã thay đổi nó thành File.txt (ví dụ) và tôi nhận được kết quả mong đợi với việc phải chỉ định my_branch: git đổ lỗi cho File.txt

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.