我使用了git pull并发生了合并冲突:
unmerged: some_file.txt
You are in the middle of a conflicted merge.
如何放弃对文件所做的更改,只保留已提取的更改?
我使用了git pull并发生了合并冲突:
unmerged: some_file.txt
You are in the middle of a conflicted merge.
如何放弃对文件所做的更改,只保留已提取的更改?
当前回答
可能不是OP想要的,但对我来说,我试图将一个稳定分支合并到一个功能分支,但冲突太多了。由于HEAD被多次提交更改,所以我没有成功重置更改,所以简单的解决方案是强制签出到一个稳定的分支。然后您可以签出到另一个分支,它将与合并前一样。
git checkout-f master
git结帐侧分支
其他回答
自从Git 1.6.1.3以来,Git checkout已经可以从合并的任何一侧进行签出:
git checkout --theirs _widget.html.erb
另一种保留工作副本状态的方法是:
git stash
git merge --abort
git stash pop
我通常建议不要这样做,因为它实际上就像Subversion中的合并,因为它会在接下来的提交中丢弃分支关系。
我想你需要重置一下。
请注意,git revert意味着与svn revert非常不同的东西-在Subversion中,该revert将丢弃您(未提交)的更改,将文件从存储库返回到当前版本,而git rever“撤消”提交。
gitreset应该执行与svnreset等效的操作,即丢弃不需要的更改。
您可以中止合并步骤:
git merge --abort
否则您可以保留更改(在哪个分支上)
git checkout --ours file1 file2 ...
否则您可以保留其他分支更改
git checkout --theirs file1 file2 ...
由于您的拉动不成功,那么HEAD(而不是HEAD^)是分支上最后一个“有效”提交:
git reset --hard HEAD
你想要的另一件事是让他们的改变凌驾于你的改变之上。
旧版本的git允许您使用“他们的”合并策略:
git pull --strategy=theirs remote_branch
但正如Junio Hamano(Git维护者)在这条消息中所解释的那样,这条消息已经被删除。如链接中所述,您可以这样做:
git fetch origin
git reset --hard origin