我如何在我的 Git 存储库中解决合并冲突?
当前回答
如果您不使用工具合并,首先复制您的代码:
- `checkout master`
- `git pull` / get new commit
- `git checkout` to your branch
- `git rebase master`
它解决冲突,你可以复制你的代码。
其他回答
识别哪些文件处于冲突中(Git应该告诉你这一点)。 打开每个文件并检查Difs; Git demarcates它们. 希望它将是显而易见的哪个版本的每个区块保持。 你可能需要讨论它与同开发人员谁承诺的代码. 一旦你解决了冲突在一个文件 git 添加到_file. 一旦你解决了所有冲突,做 git rebase --continue 或 whateve
你可以以一些方式解决合并冲突,因为其他人已经详细说明了。
我认为真正的关键是知道如何在本地和远程存储库中流动的变化。 关键是理解跟踪分支. 我发现我认为跟踪分支是我之间的“中间失落的片段”我的本地,实际的文件目录和远程定义为起源。
而不是:
git add .
git commit -m"some msg"
相反,我做:
git add file,file2,file3...
git commit # Then type the files in the editor and save-quit.
因此,你更有意识到哪些文件被添加,你也可以查看列表,并在使用编辑器为消息时思考更多。
[更新 - 随着时间的流逝,我已经更换到:
git status # Make sure I know whats going on
git add .
git commit # Then use the editor
)
此外(更重要的是你的情况),我试图避免:
git pull
或
git pull origin master.
git checkout master
git fetch
git rebase --hard origin/master # or whatever branch I want.
你也可能會發現這有用:
git 分支, fork, fetch, merge, rebase 和 clone,什么是差异?
如果你想从分支测试到大师合并,你可以遵循以下步骤:
步骤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. 然后 git diff 会向你展示冲突。
我喜欢opendiff - Git 也支持 vimdiff, gvimdiff, kdiff3, tkdiff, meld, xxdiff,从盒子中出现,你可以安装其他: git config merge.tool “your.tool” 将设置您所选择的工具,然后 git mergetool 失败的合并后将向您展示背景中的 diffs。
每当您编辑文件以解决冲突时, git 添加文件名将更新索引,而您的 diff 将不再显示。
奖金:
在上面的回答中,谈论拖动 / 混合 / 混合,我想分享一个有趣而有成效的技巧,
git pull - 回归
上面的命令是我Git生活中最有用的命令,这节省了很多时间。
在推到远程服务器之前,尝试 git pull --rebase 而不是 git pull 和手动合并,它将自动同步最新的远程服务器变更(使用一个 fetch + 合并),并将您的本地最新的合并放在 Git 记录的顶部。
如果发生冲突,只需使用
git mergetool
git add conflict_file
git rebase --continue
查找详细信息: “git pull –rebase” 做什么?
推荐文章
- 为什么调用git分支——unset-upstream来修复?
- Windows git“警告:LF将被CRLF取代”,这是警告尾巴向后吗?
- git中的哈希冲突
- git可以自动在空格和制表符之间切换吗?
- Git暂存文件列表
- 如何将git配置存储为存储库的一部分?
- 如何修改GitHub拉请求?
- 如何在Github和本地删除最后n次提交?
- 我如何调试git/git-shell相关的问题?
- 错误:无法使用rebase进行拉取:您有未分阶段的更改
- Git隐藏未缓存:如何把所有未分期的变化?
- 真实的恶魔
- 如何从另一个分支获得更改
- Git:权限被拒绝(publickey)致命-无法从远程存储库读取。克隆Git存储库时
- git reflog和log有什么区别?