我对签入文件进行了一些特定于平台的修改。当我从远程分支合并时,如何强制git保留本地版本并忽略远程版本?基本上,就像git-ignore,但是对于已经被存储库跟踪的文件。
用例是我推送到一个分支,然后将该分支拉到不同的平台上进行测试。在每个平台上第一次进行测试需要运行./configure脚本,该脚本使用特定于平台的自定义来修改某些文件。由于这些更改是自动生成的,因此我不想将它们提交到历史记录中。通常我将这些文件添加到.gitignore,但是,其中一些文件是原始存储库的一部分,因此git ignore将被忽略。
答案 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
,如果该文件尚不存在。