我目前在分支 'foo' 中。我刚刚运行了 git merge master
命令。唯一的问题是,foo 中有一个特定的文件我想要保留。有没有一种方法可以将该文件找回,同时保留来自合并主干的所有其他更改?
我目前在分支 'foo' 中。我刚刚运行了 git merge master
命令。唯一的问题是,foo 中有一个特定的文件我想要保留。有没有一种方法可以将该文件找回,同时保留来自合并主干的所有其他更改?
尝试这样做:
git checkout HEAD -- filename
这将使你的文件回滚到上一个提交。如果你想要回滚到更早的某个提交,你可以使用提交哈希或在 HEAD 关键字末尾添加 ^N,例如HEAD^2
。
git checkout --ours filename
命令。该命令会使文件保留当前分支上的版本。 - CB BaileyHEAD^
(或者使用分支名字代替HEAD),而更早之前的提交可以用 HEAD~2
(例如 HEAD~n
)来表示。 - ocodo我不确定如何从当前情况中纠正问题,但您可能想查看 git merge -s ours
。文档在这里。
一个工作流程应该是:
master
创建分支a
a
中进行自定义更改,您将不希望将其合并回master
master
和git merge -s ours a
a
并继续工作和提交。现在当您与主分支合并时,步骤2中的自定义更改将被忽略。
git merge
只有在工作目录中没有更改的情况下,并且需要从其他分支引入更改时才会覆盖文件。为了明确起见,您想要旧版本(来自您的分支)而合并成功了,还是合并产生冲突,您希望解决后的版本看起来像您的分支的以前版本? - CB Bailey