Git phiên bản: 2.14.2.2Git cho Windows "Không có thẻ tập tin" Phản hồi từ "git diff" Command
Bất cứ khi nào tôi chạy git diff
vào một kho lưu trữ Tôi chào đón với phản ứng No tags file
. Tôi đã thử chạy lệnh trên nhiều kho, nhiều bàn điều khiển (Cmd, PowerShell, MINGW64, Visual Studio Command Prompt) và tất cả đều có cùng một phản hồi.
Kỳ lạ thay, lệnh git log
cũng thất bại. Tuy nhiên, nhiều lệnh khác hoạt động như git status
, git pull
, v.v ... Có vẻ như chỉ có log
và diff
.
Tôi đã gỡ cài đặt Git hoàn toàn và cài đặt lại. Khởi động lại hệ thống của tôi. Đã cố gắng tham chiếu trực tiếp git.exe
(cho kết quả tương tự). Không có gì đang hoạt động và tôi không thấy lỗi này ở bất kỳ nơi nào khác. Tôi đã so sánh cấu hình người dùng của mình với cấu hình của đồng nghiệp và chúng giống hệt nhau.
Một số phần của lệnh thực hiện đúng cách, bởi vì nếu tôi cung cấp hai cam kết băm, và tôi cố ý phá vỡ một, câu trả lời tôi nhận được là:
Nó có vẻ như một chương trình khác có thể chiếm đoạt lệnh git diff
. Tôi tin rằng điều này bởi vì tôi không chắc chắn "Không có thẻ tập tin" thậm chí là một phản ứng Git có thể. Không chắc nó sẽ là cái gì nữa.
Để làm cho mọi việc trở nên khó hiểu hơn - mục tiêu cuối cùng của tôi là chạy git diff
trong ngữ cảnh của msbuild
và nó THỰC HIỆN TRỰC TIẾP. Bây giờ, tôi có thể hài lòng với điều này, nhưng tôi cần phải sửa đổi các lệnh diff
một chút, và chạy một xây dựng đầy đủ mỗi lần không hiệu quả, cũng không dễ dàng để khắc phục sự cố. Có một tác vụ trong tập lệnh xây dựng chạy lệnh Exec
và không có sự cố nào khi thực hiện diff
. Tôi cũng có thể thực hiện một Diff Against Current
trong SourceTree, theo hiểu biết tốt nhất của tôi, chạy một cảnh sau git diff
.
Mọi trợ giúp sẽ được đánh giá rất nhiều.
:: Chỉnh sửa ::
lệnh khác nhau:
git diff HEAD~1 HEAD
git diff master~1 master
git diff <commit-hash-1> <commit-hash-2>
git log HEAD~1..HEAD
git log master~1..master
git log <commit-hash-1>..<commit-hash-2>
Output:
Mỗi một trong các lệnh trên trả về cùng No tags file
Đáp lại, trong tất cả các hợp đồng mua lại của tôi.
Cát Trụ sở:
cd .git
cat HEAD
ls -R refs
Output:
New Repo:
mkdir testrepo
cd testrepo
git init
echo "file1" > file1.txt
git add .
git commit -m "initial commit of file1.txt"
echo "Hi there!" > file2.txt
git add .
git commit -m "added file2.txt"
git log
git diff HEAD~1 HEAD
Output:
git config -e:
git config --global -e:
:: Chỉnh sửa 2 ::
tôi gỡ bỏ cài đặt tất cả các công cụ kiểm soát nguồn/diffing của tôi (SourceTree, Git, SVN, WinMer ge, KDiff). Đã cài đặt phiên bản di động của Git. Đã mở CMD thành một repo, đặt đầy đủ đường dẫn đến git.exe portable và nó vẫn trả về đáp ứng No tags file
.
Tôi cũng đã xem xét tất cả các biến đường dẫn của tôi cho: git, vim, ming, mintty và bất kỳ thứ gì khác có vẻ nghi ngờ, nhưng không tìm thấy bất kỳ biến nào.
Tôi đã khởi động lại sau khi thực hiện tất cả các bước và sự cố vẫn tiếp diễn.
:: Chỉnh sửa 3 ::
Tôi có một người dùng khác nhau trên máy tính xách tay của tôi, chuyển sang sử dụng đó và git diff
công trình đúng cách, như vậy rõ ràng có cái gì đó với người sử dụng chính của tôi đó là mâu thuẫn. Sẽ tiếp tục xem xét thư mục User
của tôi về các sự cố.
bạn đã thử 'diff HEAD' git? –
@jrap Sau khi suy nghĩ về điều này một chút với các chỉnh sửa của bạn - tôi thực sự tò mò làm thế nào các công cụ của bạn có thể làm một sự khác biệt hoặc đăng nhập. Bạn đã cài đặt git thư mục nào và các công cụ đó có sử dụng cùng thư mục đó không? Nó gần giống như họ đang sử dụng một cái khác. Bạn có thể muốn thử cài đặt Git Extensions và xem nó có thể làm khác biệt không - tôi biết nó sử dụng thư mục Git đã cài đặt - trên thực tế, bạn phải trỏ nó vào thư mục (bình thường). – LightCC
Khi googling cho thông báo "Không có thẻ tập tin", kết quả đầu tiên tôi nhận được nói về 'vi'. Tôi không hiểu tại sao 'git' sẽ cố gắng thực thi' vi' khi chạy 'git diff' hoặc' git log', hệ thống của bạn có được cấu hình để sử dụng 'vi' làm máy nhắn tin không? – LeGEC