我如何在我的 Git 存储库中解决合并冲突?


当前回答

如果你只是想恢复远程主机,那么

git reset --hard origin/master

警告:所有本地变更将被丢失,请参见 https://stackoverflow.com/a/8476004/11769765.

其他回答

如果您不使用工具合并,首先复制您的代码:

- `checkout master`
- `git pull` / get new commit
- `git checkout` to your branch
- `git rebase master`

它解决冲突,你可以复制你的代码。

git log --merge -p [[--] path]

它似乎并不总是为我工作,通常会显示两个分支之间不同的每一个承诺,即使在使用时也会发生这种情况 - 从命令中分开路径。

我要在这个问题上工作的是打开两个命令线,并在一个行中

git log ..$MERGED_IN_BRANCH --pretty=full -p [path]

而在另一方面

git log $MERGED_IN_BRANCH.. --pretty=full -p [path]

替换 $MERGED_IN_BRANCH 与我合并的分支和 [路径] 与相矛盾的文件. 这个命令将记录所有命令,在折叠形式,在(..)两个命令之间. 如果你留下一个侧空,如在上面的命令 git 将自动使用 HEAD (你合并的分支在这种情况下)。

这将允许你看到什么承诺进入文件在两个分支后,他们分开。

git fetch <br>
git checkout **your branch**<br>
git rebase master<br>

在此步骤中,您将尝试使用您最喜欢的 IDE 解决冲突。

您可以遵循此链接来查看如何在文件中解决冲突。

git add<br>
git rebase --continue<br>
git commit --amend<br>
git push origin HEAD:refs/drafts/master  (push like a drafts)<br>

现在一切都很好,你会发现你的承诺在吉里特。

这个答案是为那些像我这样的Vim用户添加一个替代方案,他们更喜欢在编辑器内做任何事情。


饰 饰 DR

此分類上一篇


Tpope 帶來了這個偉大的插件為 Vim 稱為 fugitive. 一旦安裝,你可以執行 :Gstatus 檢查有衝突的檔案和 :Gdiff 開啟 Git 在三路合併。

一旦在三路合并,逃生会让你得到你合并的分支中的任何一个变化,如下:

:diffget //2,从原始(HEAD)分支中获取变更: :diffget //3,从合并分支中获取变更:

一旦你完成了合并文件,输入 :Gwrite 在合并的泡沫中。

Vimcasts发布了一个很好的视频,详细解释了这些步骤。

查看如何呈现冲突或,在 Git 中, git 合并文档了解合并冲突标记是什么。

此外,如何解决冲突部分解释如何解决冲突:

看到冲突后,你可以做两件事: 决定不合并. 唯一的清洁你需要是重新设置指数文件到头条承诺逆转 2. 和清理工作树的变化由 2 和 3; git merge --abort 可以用于此。

您还可以阅读关于合并冲突标记,以及如何在Pro Git书部分中解决它们的基本合并冲突。