我如何在我的 Git 存储库中解决合并冲突?
当前回答
有三个步骤:
查找哪些文件导致冲突的命令 git 状态 查看文件,在其中你会发现冲突标记为 <<<<<<<头 blablabla 将其改为你想要的方式,然后与命令 git 添加解决_conflicts_files git commit -m 混合 msg
其他回答
查看如何呈现冲突或,在 Git 中, git 合并文档了解合并冲突标记是什么。
此外,如何解决冲突部分解释如何解决冲突:
看到冲突后,你可以做两件事: 决定不合并. 唯一的清洁你需要是重新设置指数文件到头条承诺逆转 2. 和清理工作树的变化由 2 和 3; git merge --abort 可以用于此。
您还可以阅读关于合并冲突标记,以及如何在Pro Git书部分中解决它们的基本合并冲突。
合并冲突发生时,同时对文件进行更改,这里是如何解决。
下面是简单的步骤,当你进入冲突状态时要做什么:
对于实用的教程,请检查: 剧本 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
我发现的最好的东西是使用“diff3”合并冲突风格:
<<<<<<<
Changes made on the branch that is being merged into. In most cases,
this is the branch that I have currently checked out (i.e. HEAD).
|||||||
The common ancestor version.
=======
Changes made on the branch that is being merged in. This is often a
feature/topic branch.
>>>>>>>
如果冲突更长,那么我会把三个部分切成三个单独的文件,如“小”,“普通”和“天花板”。
diff common mine
diff common theirs
提示2
git log --merge -p <name of file>
如果你有自动测试,运行这些,如果你有绳子,运行它,如果这是一个可构建的项目,然后在你承诺之前建造它,等等,在所有情况下,你需要做一些测试,以确保你的变化没有打破任何东西。
例如,如果你知道你和另一个人都在不同的重复工作,这两者都会影响相同的文件集,你应该提前彼此谈话,并更好地了解你每个人都在做什么类型的变化。
如果你不确定合并,不要强迫它。
如果你想从分支测试到大师合并,你可以遵循以下步骤:
步骤1:进入分支
git checkout test
步骤2:
git pull --rebase origin master
步骤3:如果有任何冲突,请转到这些文件来修改它。
步骤4:添加这些变化
git add #your_changes_files
步骤5:
git rebase --continue
步骤6:如果仍然存在冲突,再回到步骤3;如果没有冲突,就如下:
git push origin +test
步骤7:然后测试和主人之间没有冲突,你可以直接使用合并。
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在不改变提交时间戳的情况下进行改基
- VS 2017 Git本地提交数据库。每次提交时锁定错误
- 如何在过去的一些任意提交之间注入一个提交?
- 从GitHub克隆项目后拉git子模块
- GitHub上的分叉和克隆有什么区别?
- 递归地按模式添加文件
- 我如何使用notepad++(或其他)与msysgit?
- 如何将现有的解决方案从Visual Studio 2013添加到GitHub
- Git存储库中的悬垂提交和blob是什么?它们来自哪里?
- 我如何简单地从我最新的git提交创建一个补丁?
- Git显示“警告:永久添加到已知主机列表”
- 我如何检索一个回购的远程git地址?
- 如何列出提交,因为某些提交?
- 如何在不位于存储库的情况下执行Git命令?
- 为什么git在Windows下记不住我的密码