Chắc chắn, tôi làm chính xác điều này theo thời gian sử dụng
git update-index --assume-unchanged [<file> ...]
Để hoàn tác và bắt đầu theo dõi lại (nếu bạn quên những tập tin nào chưa được theo dõi, hãy xem câu hỏi này ):
git update-index --no-assume-unchanged [<file> ...]
Tài liệu liên quan :
- [no-] giả sử không thay đổi
Khi cờ này được chỉ định, tên đối tượng được ghi cho đường dẫn không được cập nhật. Thay vào đó, tùy chọn này đặt / bỏ cài đặt bit "giả sử không thay đổi" cho các đường dẫn. Khi bit "giả sử không thay đổi" được bật, người dùng hứa sẽ không thay đổi tệp và cho phép Git giả định rằng tệp cây làm việc khớp với những gì được ghi trong chỉ mục. Nếu bạn muốn thay đổi tệp cây làm việc, bạn cần hủy đặt bit để báo cho Git. Điều này đôi khi hữu ích khi làm việc với một dự án lớn trên một hệ thống tệp có lstat(2)
cuộc gọi hệ thống rất chậm (ví dụ: cifs).
Git sẽ thất bại (một cách duyên dáng) trong trường hợp nó cần sửa đổi tệp này trong chỉ mục, ví dụ như khi hợp nhất trong một cam kết; do đó, trong trường hợp tệp giả định không bị theo dõi bị thay đổi ngược dòng, bạn sẽ cần xử lý tình huống theo cách thủ công.
Thất bại trong trường hợp này có nghĩa là, nếu có bất kỳ thay đổi nào ngược dòng với tệp đó (thay đổi hợp pháp, v.v.) khi bạn thực hiện thao tác kéo, nó sẽ nói:
$ git pull
…
From https://github.com/x/y
72a914a..106a261 master -> origin/master
Updating 72a914a..106a261
error: Your local changes to the following files would be overwritten by merge:
filename.ext
và sẽ từ chối hợp nhất.
Tại thời điểm đó, bạn có thể khắc phục điều này bằng cách hoàn nguyên các thay đổi cục bộ của mình, đây là một cách:
$ git checkout filename.ext
sau đó kéo lại và sửa đổi lại tệp cục bộ của bạn hoặc có thể đặt –no-assume-unchanged
và bạn có thể thực hiện stash và hợp nhất bình thường, v.v. tại thời điểm đó.