Git: Bỏ qua các tệp được theo dõi


181

Tôi có một số tệp được theo dõi trong kho lưu trữ được tự động sửa đổi khi xây dựng mã. Tôi không muốn mở khóa chúng, tôi chỉ không muốn chúng xuất hiện dưới dạng sửa đổi và tôi không muốn chúng được dàn dựng khi tôi thêm.

Điều này có thể không?



5
Nếu các tệp này được tạo tự động bởi bản dựng, thì chúng không nên được theo dõi trong git.
Codebling 17/05/2015

Dưới đây là hướng dẫn nhanh về gitignore mà bạn có thể thấy hữu ích: learningpassion.wordpress.com/2016/06/17/
joker

Câu trả lời:


282

Chắc chắn rồi.

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> ...]

3
Đ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

2
@haymansfield trang trợ giúp cho lệnh nói như sauGit will fail (gracefully) in case it needs to modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is changed upstream, you will need to handle the situation manually.
Parham

3
Bất kỳ cách nào để áp dụng --assume-unchangedkhi nhân bản? Vì vậy, tất cả người dùng sẽ có các tệp, nhưng không thấy các thay đổi cục bộ đối với chúng trong các khác biệt.
Gauthier

10
@Tyler - không, một khi tệp được theo dõi bởi git, nó sẽ luôn được theo dõi, ngay cả khi tệp đó xuất hiện trong .gitignore. Trường hợp sử dụng của tôi là một cái gì đó như "đây là một mẫu cơ sở của một tệp nơi bạn lưu trữ thông tin đăng nhập của bạn, bây giờ không bao giờ cam kết nó".
Jon V

5
@watbywbarif Tôi có bộ lệnh git update-index --no-assume-unchanged $(git ls-files $(git rev-parse --show-toplevel))là bí danh git. Bất cứ khi nào tôi nghi ngờ đó là một số trong số các shenanigans, tôi chỉ cần làm điều đó.
Philippe Carphin

6

Một cách khác config.ini.template "xem https://gist.github.com/canton7/1423106 để biết ví dụ đầy đủ.

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


5

Một giải pháp khác sử dụng thuộc tính git và% f trong lệnh bộ 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

16
Bạn có thể cho biết thêm chi tiết về điều này có nghĩa là gì và nó đang làm gì một cách tình cờ?
rogerdpack

điều này thêm bộ lọc cho tệp đọc nội dung từ tệp ".orig" có văn bản gốc
koct9i
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.