Git合并分支出现的冲突解决

人生不如意之事十有八九,合并分支往往也不是一帆风顺的。

我们准备新的分支newbranch.

[email protected]V-PC MINGW32 /c/gitskill (master)
$ git checkout -b newbranch
Switched to a new branch ‘newbranch‘

修改readme.txt,在最后一行添加:

$ cat readme.txt
master分支内容
添加dev分支内容
分支合并测试

在分支newbranch上提交:

[email protected] MINGW32 /c/gitskill (newbranch)
$ git add readme.txt

[email protected] MINGW32 /c/gitskill (newbranch)
$ git commit -m "newbranch first commit"
[newbranch cccee34] newbranch first commit
1 file changed, 2 insertions(+), 1 deletion(-)

切换到master分支上:

$ git checkout master
Switched to branch ‘master‘
Your branch is ahead of ‘origin/master‘ by 2 commits.
(use "git push" to publish your local commits)

在master分支上把readme.txt文件的最后一行添加:

master分支上的合并测试内容

添加,提交

[email protected] MINGW32 /c/gitskill (master)
$ git add readme.txt

[email protected] MINGW32 /c/gitskill (master)
$ git commit -m "master branch merge test"
[master 4bb4c5a] master branch merge test
1 file changed, 2 insertions(+), 1 deletion(-)

这种情况下,自动合并会出现冲突:

[email protected] MINGW32 /c/gitskill (master)
$ git merge newbranch
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

我们直接查看合并后的readme.txt文件内容:

$ cat readme.txt
master分支内容
添加dev分支内容
<<<<<<< HEAD
master分支上的合并测试内容
=======
分支合并测试
>>>>>>> newbranch

Git会用<<<<<<<,=======,>>>>>>>标记不同分支的内容,我们修改一下后保存

master分支内容
添加dev分支内容
master分支上的合并测试内容
分支合并测试

然后添加,提交:

[email protected] MINGW32 /c/gitskill (master|MERGING)
$ git add readme.txt

[email protected] MINGW32 /c/gitskill (master|MERGING)
$ git commit -m "branch merge"
[master f3d8f1e] branch merge

用带参数的git log也可以看到分支的合并情况:

[email protected] MINGW32 /c/gitskill (master)
$ git log --graph --pretty=oneline --abbrev-commit
* f3d8f1e branch merge
|\
| * cccee34 newbranch first commit
* | 4bb4c5a master branch merge test
|/
* 0d0bbca dev first commit
* d5aea29 master first commit
* 023ee21 Initial commit

现在,删除newbranch分支:

[email protected] MINGW32 /c/gitskill (master)
$ git branch -d newbranch
Deleted branch newbranch (was cccee34).

[email protected] MINGW32 /c/gitskill (master)
$ git branch
* master

小结:当Git无法自动合并分支时,就必须首先解决冲突,解决冲突后,再提交,合并完成

可以用$ git log --graph 命令可以看到分支合并图。

时间: 2024-08-27 16:28:12

Git合并分支出现的冲突解决的相关文章

git分支管理与冲突解决(转载)

Git 分支管理和冲突解决 原文:http://www.cnblogs.com/mengdd/p/3585038.html 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支,名叫newname. git checkout newname 检出分支,即切换到名叫newname的分支. git checkout –b newname master 这个命令将上面两个命令合并:在

Git 合并分支

git merge 用来做分支合并,将其他分支中的内容合并到当前分支中.比如分支结构如下: master / C0 ---- C1 ---- C2 ---- C4 C3 ---- C5 issueFix 当前分支是master $ git checkout master 把issueFix中的内容Merge进来: $ git merge issueFix 如果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突: $ g

git在idea中的冲突解决(非常重要)

1.什么是冲突 冲突是指当你在提交或者更新代码时被合并的文件与当前文件不一致.读起来有点绕,结合下面的案例理解. 从上面对冲突的定义来看,冲突时发生在同一个文件上的. 2.生产上冲突的场景 常见冲突的生产场景如下 更新代码 提交代码 多个分支代码合并到一个分支时 多个分支向同一个远端分支推送代码时 git的合并中产生冲突的具体情况: <1>两个开发者(分支中)修改了同一个文件(不管什么地方) <2>两个开发者(分支中)修改了同一个文件的名称 注意:两个分支中分别修改了不同文件中的部

GIT合并分支代码

1..git同文件夹下,右键进入git bash命令行,然后进入要合并的分支(如develop分支合并到release,则进入release目录) git checkout release(切换分支) git pull(拉去最新的代码) 2.查看分支 git branch -a(查看所有分支:本地分支白色,当前分支绿色,远程分支红色) 3.合并分支 git merge develop(因为develop在上一步是白色的,不建议直接合并远程分支) 4.查看状态 git status(这里可以看到是

Git合并分支加redis

项目开发git操作 基本流程 开发前,拉一次远程仓库 工作区进行开发 将开发结果提交到本地版本库 -git status查看没有被处理的事件 拉取远程仓库(每一次要提交远程仓库前必须先拉) 如果出现冲突,线下沟通(协商重新开发冲突文件),要重新3,4步 没有冲突,提交数据到远程仓库 协同开发 1.所有人在一个分支上进行开发---通常开发分支为dev 2.遵循git开发流程:先提交本地版本库,再拉取服务器代码,最后提交代码 提交到本地版本库:git commit -m '提交的注释信息' 拉取远程

git合并分支成功,但是push失败(remote: GitLab: You are not allowed to push code to protected branches on this project.)

紧急修复修改代码之后需要合并分支到master分支并push到线上,但是merge成功,push却失败了,报错如下: ? buzzextractor git:(master) git merge hotfix Updating 4668fce..9527ae9 Fast-forward build_online_images.sh | 2 +- extractor/buzz/lib/utils.py | 2 +- extractor/conf/config.ini.bushu | 2 +- ex

git 合并分支的时候会遇到的问题

在码云上传代码的时候, 合并分支的时候, 有时候会遇到以下的问题: Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. 这个时候页面仿佛被锁住一样,, 不能进行任何操作, 在网上查找问题之后, 有两个解决办法: 第一个 按键盘上的 I 键盘 , 但是不太好使, 第二种方法亲测好

git合并分支

现在我们想把develop分支合并到主分支master上,按下面的操作即可: 1.切换到master分支 git checkout master 2.合并develop分支到master分支 git merge develop 3.推送至远程版本库 git push 但是,有些情况,我们只想把develop分支上的某一个commit版本合并到master分支上,怎么办? 下面的方法可以解决: 1.切换至develop分支 git checkout develop 2.查看commit提交记录 g

git合并分支上指定的commit

merge 能够胜任平常大部分的合并需求.但也会遇到某些特殊的情况,例如正在开发一个新的功能,线上说有一个紧急的bug要修复.bug修好了但并不像把仍在开发的新功能代码也提交到线上去.这时候也许想要一个只合并指定某些 commit 的功能. 假设分支结构如下: dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master] 76cada-62ecb3-b886a0[feature] 再假设 62ecb3 的提交修复了bug,这时候可以用cherry pic