我使用了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.
如何放弃对文件所做的更改,只保留已提取的更改?
当前回答
评论建议git reset-merge是git merge-ort的别名。值得注意的是,如果存在merge_HEAD,gitmerge--abort仅等同于gitreset-merge。这可以在git help for merge命令中读取。
当存在merge_HEAD时,gitmerge--abort等同于gitreset-merge。
合并失败后,如果没有merge_HEAD,则可以使用git-reset-mmerge撤消失败的合并,但不必使用gitmerge-art。它们不仅是同一事物的新旧语法。
就个人而言,我发现git reset-merge对于与所描述的场景类似的场景更为强大,并且通常合并失败。
其他回答
我想你需要重置一下。
请注意,git revert意味着与svn revert非常不同的东西-在Subversion中,该revert将丢弃您(未提交)的更改,将文件从存储库返回到当前版本,而git rever“撤消”提交。
gitreset应该执行与svnreset等效的操作,即丢弃不需要的更改。
由于您的拉动不成功,那么HEAD(而不是HEAD^)是分支上最后一个“有效”提交:
git reset --hard HEAD
你想要的另一件事是让他们的改变凌驾于你的改变之上。
旧版本的git允许您使用“他们的”合并策略:
git pull --strategy=theirs remote_branch
但正如Junio Hamano(Git维护者)在这条消息中所解释的那样,这条消息已经被删除。如链接中所述,您可以这样做:
git fetch origin
git reset --hard origin
如果最终出现合并冲突,并且没有任何要提交的内容,但仍显示合并错误。在应用所有下面提到的命令之后,
git reset --hard HEAD
git pull --strategy=theirs remote_branch
git fetch origin
git reset --hard origin
请删除
.git\index.lock
文件[恢复时剪切粘贴到其他位置],然后根据需要的版本输入以下任意命令。
git reset --hard HEAD
git reset --hard origin
希望这有帮助!!!
如果您的git版本>=1.6.1,则可以使用git reset-merge。
此外,正如@Michael Johnson所提到的,如果您的git版本是>=1.7.4,您也可以使用gitmerge--abort。
一如既往,在开始合并之前,确保没有未提交的更改。
从gitmerge手册页
当存在merge_HEAD时,gitmerge--abort等同于gitreset-merge。
合并过程中,MERGE_HEAD出现。
此外,关于启动合并时未提交的更改:
如果在开始合并之前有不想提交的更改,只需在合并之前将其保存,并在完成合并或中止合并后将其弹出。
评论建议git reset-merge是git merge-ort的别名。值得注意的是,如果存在merge_HEAD,gitmerge--abort仅等同于gitreset-merge。这可以在git help for merge命令中读取。
当存在merge_HEAD时,gitmerge--abort等同于gitreset-merge。
合并失败后,如果没有merge_HEAD,则可以使用git-reset-mmerge撤消失败的合并,但不必使用gitmerge-art。它们不仅是同一事物的新旧语法。
就个人而言,我发现git reset-merge对于与所描述的场景类似的场景更为强大,并且通常合并失败。