2013-07-23 25 views
8

Tôi mới tham gia git và tôi không biết mình đang làm gì sai. Tôi muốn chạy git diff --name-only nhưng tôi muốn loại trừ các tệp kết thúc bằng .test có nghĩa là ngay cả khi những haves này đã thay đổi, tôi không muốn git diff cho đầu ra rằng nó đã thay đổi. Tôi đã cố thêm các tệp này vào tệp .gitignore nhưng tất cả những gì đã làm là bao gồm .gitignore khi tôi chạy lệnh git diff!Git diff không bỏ qua các tệp được chỉ định trong .gitignore

Tôi đang làm gì sai và làm cách nào để loại trừ tệp khi tôi chạy git diff?

+1

Hiện nội dung của tập tin .gitignore bạn – bengoesboom

+1

Ngoài ra Bạn có thể đã thực hiện một sai lầm trong tập tin gitignore của bạn, chúng ta có thể thấy nếu bạn đã làm điều đó sau khi bạn gửi nó. – usumoio

Trả lời

15

OK, Đây là những gì bạn đã làm sai. Git sẽ tiếp tục theo dõi các tệp đó vì bạn đã bắt đầu theo dõi chúng trước đó trong dự án của bạn. Tại một số điểm trước đó bạn đã chạy cam kết ban đầu trông giống như:

git add . # this added everything to the tracking system including your .test files 
git commit -a -m 'I just committed everything in my project .test files included' 

Đưa vật là tập gitignore của bạn sẽ giữ các tập tin tương lai mà bạn tạo ra mà kết thúc trong .test từ vào dự án của bạn, nhưng bạn cần phải loại bỏ các .test tập tin bạn đã nói với git để theo dõi từ bộ nhớ của git. Việc đưa mọi thứ vào gitignore không tạo ra bất kỳ hành động nào cho các tệp được theo dõi.

Lựa chọn 1::

# you can remove the files from gits tracking system and then put them back 
# when you go to put them back now git will have no memory of tracking these 
# and will consider future edits to be ignored 
# Back your .test files up before doing this, and this will delete them from your project 
git rm /path/to/your/file.test 

Phương án 2: Những gì bạn cần phải làm gì bây giờ đây là

# this is safer but does not use gitignore at all 
git update--index --assume-unchanged /path/to/your/file.test 

Khi bạn chạy tùy chọn 2 bạn đang nói git rằng đối với phần còn lại của thời gian tập tin đó Điều này cho phép bạn giữ các tập tin .test của bạn như là một phần của dự án được theo dõi của bạn (như chúng bây giờ), nhưng git sẽ không bao giờ làm phiền bạn về những thay đổi đối với chúng bao giờ nữa. Lưu ý rằng hoạt động này có thể được hoàn tác bất cứ lúc nào và không phá hoại, đó là lý do tại sao nó an toàn hơn. Ngoài ra bạn nên đọc lên trên nó trước khi bạn sử dụng nó.

https://www.kernel.org/pub/software/scm/git/docs/git-update-index.html

+2

Đối với git 1.8, lệnh sẽ là: git update-index --assume-constant /path/to/your/file.test Bằng cách này, câu trả lời tuyệt vời, nó đã giúp tôi rất nhiều. – fabregas88

+0

Không sao, tôi rất vui vì tôi có thể giúp. – usumoio

+4

Sử dụng 'git rm --cached' sẽ chỉ xóa tệp khỏi chỉ mục - không cần phải sao lưu trước. – Graeme

Các vấn đề liên quan