80

我想从提交中自动排除 2 个文件,它们是 git 存储库的一部分,但有一些更改,不应该是 github 存储库的一部分,因为它们有一些更改只对我的本地系统有意义,而不是其他开发商。

我将它们添加到.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
#

我不想在每次提交时定期取消它们(有一次我可能会忘记),我该怎么做?

4

1 回答 1

191

您想要的是忽略跟踪文件的更改。这无法正确实现(正如查尔斯贝利 所说),无论是 with.gitignore还是 with .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]"
于 2012-06-04T12:30:20.937 回答