我想自动从提交中排除2个文件,这些文件是git存储库的一部分,但有一些更改,不应该是github repo的一部分,因为它们有一些只对我的本地系统有意义的更改而不是其他开发者。
我将它们添加到.git/info/exclude
希望git知道他不应该对它们进行更改:
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
a.conf
b.conf
# *~
但git status
仍将其列为提交阶段:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: build/conf/a.conf
# modified: build/conf/b.conf
#
我不想在每次提交时定期取消它们(有一次我可能会忘记),我该怎么做?
答案 0 :(得分:127)
您希望忽略跟踪文件的更改。这不能正确地实现(Charles Bailey says),.gitignore
也不能.git/info/exclude
。
您需要使用git update-index
:
git update-index --assume-unchanged build/conf/a.conf
git update-index --assume-unchanged build/conf/b.conf
将达到您想要的效果:文件始终保持不变。
如果您想再次跟踪这些文件中的更改,请使用--no-assume-unchanged
。
最后,如果您想知道哪些文件当前处于--assume-unchanged
模式,请向git询问
git ls-files -v | grep -e "^[hsmrck]"