如何防止签入文件覆盖本地版本?

时间:2016-06-10 23:11:33

标签: git github

我对签入文件进行了一些特定于平台的修改。当我从远程分支合并时,如何强制git保留本地版本并忽略远程版本?基本上,就像git-ignore,但是对于已经被存储库跟踪的文件。

用例是我推送到一个分支,然后将该分支拉到不同的平台上进行测试。在每个平台上第一次进行测试需要运行./configure脚本,该脚本使用特定于平台的自定义来修改某些文件。由于这些更改是自动生成的,因此我不想将它们提交到历史记录中。通常我将这些文件添加到.gitignore,但是,其中一些文件是原始存储库的一部分,因此git ignore将被忽略。

3 个答案:

答案 0 :(得分:4)

这可能是git pull keeping local changes的副本,因为如果不提交特定于平台的更改,那么第一个答案似乎是最佳解决方案。

答案 1 :(得分:0)

这是一种可能的解决方案。

假设Html.Raw("\"test string\"") 之前的原始HEAD为A.合并后,运行git merge,将文件恢复为A状态。

但这使得工作树不洁净。如果您运行git checkout A -- path_of_the_file_you_want_to_keep,您将在索引中找到更改的文件。我认为除非你再做一次提交,否则这是不可避免的。

由于原始HEAD由git中的变量ORIG_HEAD引用,因此无论A的实际sha1如何,您都可以始终运行git status

答案 2 :(得分:0)

请勿签入。请使用其他名称签入模板,并忽略活动文件的名称。

如果您的项目需要一个名为(例如)config.txt的文件,请将该文件名放在.gitignore中,并将具有不同名称的文件(如config.sample.txt)检入存储库。如果您想获得幻想,可以让您的应用程序自动将文件从config.sample.txt复制到config.txt,如果该文件尚不存在。