我创建了一个包含在 git 存储库中的文件的默认版本。重要的是,当有人克隆存储库时,他们会获得此文件的副本。但是,我想设置 git 以便稍后忽略对此文件的更改。 .gitignore仅适用于未跟踪的文件。
.gitignore
我的动机是该文件包含特定于机器的信息。我想提供默认值,同时允许人们进行不会被推回原始存储库的本地更改,当我们拉新更改时会产生合并冲突。
我们通常很懒惰并且经常使用git add .,所以我很确定如果我不能告诉 git 忽略这个文件,对它的更改最终会被提交和推送。
git add .
总结一下,
default_values.txt
正如许多其他人所提到的,一个好的现代解决方案是:
git update-index --skip-worktree default_values.txt
这将忽略对该文件的本地和上游更改,直到您决定再次允许它们:
git update-index --no-skip-worktree default_values.txt
您可以获得标记为已跳过的文件列表:
git ls-files -v . | grep ^S
请注意,与 不同--skip-worktree的是,一旦拉取上游更改,--assume-unchanged状态就会丢失。
--skip-worktree
--assume-unchanged