Mar*_*arc 109 git gitattributes
我创建了一个包含在git存储库中的文件的默认版本.重要的是,当某人克隆存储库时,他们会获得此文件的副本.但是,我想设置git,以便稍后忽略对此文件的更改. .gitignore仅适用于未跟踪的文件.
我的动机是这个文件包含机器特定的信息.我想提供默认值,同时允许人们进行不会被推回原始存储库的本地更改,从而在我们提取新更改时创建合并冲突.
我们通常非常懒惰并且使用git add .很多,所以我很确定如果我不能告诉git忽略这个文件,对它的更改将最终得到提交和推送.
总结一下,
default_values.txt添加到我的git存储库,并在有人克隆该存储库时包含该文件.git add .不应该添加default_values.txt到提交.moo*_*oom 79
正如许多其他人所提到的,一个好的现代解决方案是:
git update-index --skip-worktree default_values.txt
Run Code Online (Sandbox Code Playgroud)
这将忽略对该文件的更改,包括本地和上游,直到您决定再次允许它们:
git update-index --no-skip-worktree default_values.txt
Run Code Online (Sandbox Code Playgroud)
您可以获取标记为已跳过的文件列表:
git ls-files -v . | grep ^S
Run Code Online (Sandbox Code Playgroud)
请注意,与--skip-worktree不同,一旦上拉更改被拉出,--assume-unchanged状态将丢失.
tam*_*asd 48
你在寻找的是什么git update-index --assume-unchanged default_values.txt.
有关更多详细信息,请参阅文档:http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html
Lau*_*ves 19
我通常看到的方法是创建一个具有不同名称的文件,例如:default_values_template.txt并将default_values.txt放在.gitignore中.指示人们将default_values_template.txt复制到其本地工作空间中的default_values.txt,并根据需要进行更改.
看看涂抹/清洁脚本.通过这种方式,您可以对文件进行版本控制,但在检出文件时,您将通过将通用/占位符数据替换为文件中的机器特定数据来"涂抹"它.
提交时,您将通过使用通用或占位符信息替换机器特定信息来"清理"它.
涂抹/清理脚本必须是确定性的,因为多次应用它们,以不同的顺序将等同于仅运行序列中的最后一个.
如果您需要公开存储库但内容可能包含敏感信息,则可以使用密码应用相同的密码.