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


当前回答

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>

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

其他回答

我要我的或他们的版本完整,或者想审查个别的变化,并决定每一个。

完全接受我的或他们的版本:

接受我的版本(本地,我们的):

git checkout --ours -- <filename>
git add <filename>              # Marks conflict as resolved
git commit -m "merged bla bla"  # An "empty" commit

接受其版本(远程,自己的):

git checkout --theirs -- <filename>
git add <filename>
git commit -m "merged bla bla"

如果你想做所有冲突文件运行:

git merge --strategy-option ours

git merge --strategy-option theirs

查看所有变更并单独接受它们

git mergetool 评论 改变并接受每个版本. git 添加 <filename> git commit -m "merged bla bla"

默认的 mergetool 在命令线上工作. 如何使用命令线 mergetool 应该是一个单独的问题。

您也可以为此安装视觉工具,例如通讯和运行

git mergetool -t meld

它将打开本地版本(ours),“base”或“合并”版本(合并的当前结果)和远程版本(天花板)。在完成时保存合并版本,运行 git mergetool -t 再次登记,直到您获得“不需要合并文件”,然后转到步骤3和4。

合并冲突发生时,同时对文件进行更改,这里是如何解决。

下面是简单的步骤,当你进入冲突状态时要做什么:

对于实用的教程,请检查: 剧本 5 - 解决混合冲突 由 Katacoda。

差异化

我成功地使用了DifMerge,它可以在Windows、macOS和Linux/Unix上视觉上比较和合并文件。

此分類上一篇

圖片來源:DifMerge(Linux屏幕拍攝)

git mergetool -t diffmerge .

马克思

brew install caskroom/cask/brew-cask
brew cask install diffmerge

而且,你可能(如果没有提供)需要下列额外简单的插槽放置在你的PATH(例如 /usr/bin):

#!/bin/sh
DIFFMERGE_PATH=/Applications/DiffMerge.app
DIFFMERGE_EXE=${DIFFMERGE_PATH}/Contents/MacOS/DiffMerge
exec ${DIFFMERGE_EXE} --nosplash "$@"

-Alt-Up/Down to jump to previous/Next changes. -Alt-Left/Right to accept change from left or right. -Alt-Up/Down to jump to previous/Next changes. -Alt-Left/Right to accept change from left or right

我正在使用Microsoft的Visual Studio代码来解决冲突. 它很容易使用. 我在工作场所保持我的项目开放. 它检测和突出冲突. 此外,它提供了GUI选项,以选择我想要从头部或进入的任何变化。

此分類上一篇

我一直遵循下面的步骤,以避免冲突。

git checkout master (到主分支) git pull (更新你的主分支以获得最新的代码) git checkout -b mybranch (检查一个新的分支,并开始在该分支工作,以便你的主分支总是留在顶部) git add. and git commit and git push (在你的本地分支后你的变化) git checkout master (回到你的主分支)

现在你可以做同样的事情,并保持你想要的多家当地分支机构,并同时工作,只要在需要时对你的分支机构进行吉特支票。

然而,答案是简单而令人沮丧的,合并冲突几乎总是可以手动解决的,如果你使用一个工具,如GitLab,GUI可能会帮助你在两个代码版本中找到差异,但在一天结束时,你必须决定哪条线应该保持,哪条线应该被删除。

一个简单的例子:程序员A和程序员B都将相同的 - 不同的修改 - 文件推到一个遥远的存储库.程序员A打开一个合并请求,GitLab强调了两个版本之间发生冲突的代码几条线。