2012-05-25 45 views
112

Tôi có một số tệp được theo dõi trong một kho lưu trữ được tự động sửa đổi khi tạo mã. Tôi không muốn bỏ qua chúng, tôi chỉ không muốn chúng xuất hiện thay đổi và tôi không muốn chúng được dàn dựng khi tôi thêm vào.Git: Bỏ qua các tệp được theo dõi

Điều này có khả thi không?

+5

bản sao có thể có của [git: tôi có thể cam kết tệp và bỏ qua các thay đổi nội dung không?] (Http://stackoverflow.com/questions/3319479/git-can-i-commit-a-file-and-ignore- các nội dung thay đổi) –

+3

Nếu các tệp này được tạo ** tự động **, thì chúng không được theo dõi trong git. –

+0

Đây là hướng dẫn nhanh về gitignore mà bạn có thể thấy hữu ích: https://learningpassion.wordpress.com/2016/06/17/git-tutorial-day-to-day-use-part-4-gitignore-diff-and -difftools-moving-and-remove-files/ – joker

Trả lời

159

Chắc chắn.

git update-index --assume-unchanged file 

Để hoàn tác và bắt đầu theo dõi lại:

git update-index --no-assume-unchanged [<file> ...] 
+1

Điều gì xảy ra với các tệp ở trạng thái này khi tôi sửa đổi chúng? – haymansfield

+1

@haymansfield trang trợ giúp cho lệnh cho biết sau đây '' 'Git sẽ thất bại (duyên dáng) trong trường hợp cần sửa đổi tệp này trong chỉ mục, ví dụ: khi sáp nhập trong một cam kết; do đó, trong trường hợp tệp giả định không được sửa đổi ngược dòng, bạn sẽ cần phải xử lý tình huống theo cách thủ công.''' – Parham

+1

@Parham, tài liệu hiện đang được thay đổi để rõ ràng hơn về ý định của cờ --assume-constant vì sự hiểu lầm của người dùng. Trong Git, mất dữ liệu sẽ vô ích, do đó các đối tượng bổ sung lưu dữ liệu được cho là 'duyên dáng'. Báo giá đó sẽ được thay đổi. –

1

Một giải pháp khác sử dụng thuộc tính git và% f trong lệnh lọc:

git config filter.orig.clean "cat %f.orig" 
cp filename filename.orig 
echo "filename filter=orig" >> .git/info/attributes 
echo "filename.orig" >> .git/info/exclude 
+4

Bạn có thể cung cấp thêm chi tiết về ý nghĩa của điều này và những gì nó đang thực hiện một cách tình cờ không? – rogerdpack

2

Một cách khác là để duy trì một "theo dõi" tệp mẫu, sau đó có bản sao chưa được theo dõi của địa phương, ví dụ: https://gist.github.com/canton7/1423106

Sau đó, sẽ không có bất kỳ mối quan tâm nào nếu tệp được thay đổi trong git, v.v. và bạn có thể sử dụng .gitignore (cuối cùng) trên tệp không được theo dõi cục bộ.

+5

Câu trả lời này thực sự ban đầu bởi Seth Robertson, nhưng nó đã bị xóa bởi một người kiểm duyệt * mà không bình luận * (cái gì?) Để hồi sinh nó ở đây. Mods thân mến: nếu bạn muốn đơn phương xóa câu trả lời, vui lòng cung cấp lý do để làm như vậy ... – rogerdpack

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