git merge合并分支,解决冲突
1.git merge示意
git merge 用来做分支合并,将其他分支中的内容合并到当前分支中。比如分支结构如下:
master / C0 ---- C1 ---- C2 ---- C4 \ C3 ---- C5 \ issueFix
当前分支是master
$ git checkout master
把issueFix中的内容Merge进来:
$ git merge issueFix
如果没有冲突的话,merge完成。有冲突的话,git会提示那个文件中有冲突,比如有如下冲突:
<<<<<<< HEAD:test.c
printf (“test1″);
=======
printf (“test2″);
>>>>>>> issueFix:test.c
可以看到 ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时检出的分支)中的内容,下半部分是在 issueFix 分支中的内容。解决冲突的办法无非是二者选其一或者由你亲自整合到一起。比如你可以通过把这段内容替换为下面这样来解决:
printf (“test2″);
这个解决方案各采纳了两个分支中的一部分内容,而且删除了 <<<<<<<,=======,和>>>>>>> 这些行。在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决(resolved)。因为一旦暂存,就表示冲突已经解决。如果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突:
$ git mergetool
merge tool candidates: kdiff3 tkdiff xxdiff meld gvimdiff opendiff emerge vimdiff
Merging the files: index.html
Normal merge conflict for ‘test.c’:
{local}: modified
{remote}: modified
Hit return to start merge resolution tool (kdiff3):
合并后的分支图如下:
master / C0 ---- C1 ---- C2 ---- C4 ---- C6 \ / C3 ----C5 \ issueFix
注意,这次合并的实现,由于当前 master 分支所指向的 commit (C4)并非想要并入分支(issueFix)的直接祖先,Git 不得不进行一些处理。就此例而言,Git 会用两个分支的末端(C4 和 C5)和它们的共同祖先(C2)进行一次简单的三方合并。对三方合并的结果作一新的快照,并自动创建一个指向它的 commit(C6)
退出合并工具以后,Git 会询问你合并是否成功。如果回答是,它会为你把相关文件暂存起来,以表明状态为已解决。然后可以用 git commit 来完成这次合并提交。
2.git merge示例
准备新的feature1
分支,继续我们的新分支开发:
-
$ git switch -c feature1
-
Switched to a new branch
'feature1'
修改readme.txt
最后一行,改为:
Creating a new branch is quick AND simple.
在feature1
分支上提交:
-
$ git add readme.txt
-
-
$ git commit -m
"AND simple"
-
[feature1 14096d0] AND simple
-
1 file changed, 1 insertion(+), 1 deletion(-)
切换到master
分支:
-
$ git switch master
-
Switched to branch
'master'
-
Your branch is ahead of
'origin/master' by 1 commit.
-
(use
"git push" to publish your
local commits)
Git还会自动提示我们当前master
分支比远程的master
分支要超前1个提交。
在master
分支上把readme.txt
文件的最后一行改为:
Creating a new branch is quick & simple.
提交:
-
$ git add readme.txt
-
$ git commit -m
"& simple"
-
[master 5dc6824] & simple
-
1 file changed, 1 insertion(+), 1 deletion(-)
现在,master
分支和feature1
分支各自都分别有新的提交,变成了这样:
这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:
-
$ git merge feature1
-
Auto-merging readme.txt
-
CONFLICT (content): Merge conflict
in readme.txt
-
Automatic merge failed; fix conflicts and
then commit the result.
果然冲突了!Git告诉我们,readme.txt
文件存在冲突,必须手动解决冲突后再提交。git status
也可以告诉我们冲突的文件:
-
$ git status
-
On branch master
-
Your branch is ahead of
'origin/master' by 2 commits.
-
(use
"git push" to publish your
local commits)
-
-
You have unmerged paths.
-
(fix conflicts and run
"git commit")
-
(use
"git merge --abort" to abort the merge)
-
-
Unmerged paths:
-
(use
"git add <file>..." to mark resolution)
-
-
both modified: readme.txt
-
-
no changes added to commit (use
"git add" and/or
"git commit -a")
我们可以直接查看readme.txt的内容:
-
Git is a distributed version control system.
-
Git is free software distributed under the GPL.
-
Git has a mutable index called stage.
-
Git tracks changes of files.
-
<<<<<<<
HEAD
-
Creating a new branch is quick & simple.
-
=======
-
Creating a new branch is quick AND simple.
-
>>>>>>> feature1
Git用<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容,我们修改如下后保存:
Creating a new branch is quick and simple.
再提交:
-
$ git add readme.txt
-
$ git commit -m
"conflict fixed"
-
[master cf810e4] conflict fixed
现在,master
分支和feature1
分支变成了下图所示:
用带参数的git log
也可以看到分支的合并情况
-
$ git
log --graph --pretty=oneline --abbrev-commit
-
* cf810e4 (HEAD -> master) conflict fixed
-
|\
-
| * 14096d0 (feature1) AND simple
-
* | 5dc6824 & simple
-
|/
-
* b17d20e branch
test
-
* d46f35e (origin/master) remove test.txt
-
* b84166e add test.txt
-
* 519219b git tracks changes
-
* e43a48b understand how stage works
-
* 1094adb append GPL
-
* e475afc add distributed
-
* eaadf4e wrote a readme file
最后,删除feature1
分支:
$ git branch -d feature1 Deleted branch feature1 (was 14096d0).
</article>
如上图所示,将feature分支合并到master,我们需要一个比较的标准,如果只是3和6比较,那么3与6相比,添加了一个文件,也可以说成是6与…
master 合并到 branch_test --> compare branches and continue --> submit merge request
提示:合并冲突。
2、使用 idea 打开项目。
(1)执行:git fetch origin
(2)切换到 master 分支,更新到最新版本。
(3)切换到…
1、在主分支msater中项目右键git->Respository->pull
主分支上会自动合并分支的代码:
2、出现冲突文件
冲突提示:等号上边时当前分支代码,下边时合并分支的代码.
另一中方法是点击冲突文件右键->Git->Resove Conflicts
合并后的代码:
https://blog.csdn.net/su1573/article/details/91990437
source…
开始说解决步骤:
步骤1. 本地打开git GUI,本地checkout到dev
假设我们在之前创建的 location-modules 分支上添加的新功能也想应用到 master 分支上,这样我们可以做一个合并的操作。用的是 git merge 命令。
首先切换到 master 这个分支上,可以用一个 git branch 查看一下当前的分支,如果在其它的分支上,用 git checkout 切换到 master 这个分支上来 git che…
git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master
二、当master代码改动了,需要更新开发分支(dev)上的代码
git checkout master
git pull
git chec
C0 ---- C1 ---- C2 ---- C4
C3 ---- C5
git merge 命令应用的三种情景:
一、“快进”。(无冲突)
master分支
假设现在只有一个默认的 master 分支,并提交了3次,B0、B1和B2都是提交对象。
首先要清楚,每次产生的提交对象会包含一个指向上次提交对象(父对…
1、切换到master分支:git checkout master
2、创建并切换到two分支:git checkout -b two
3、将two分支push到远程仓库(与本地仓库同步):git push origin two
4、修改two分支上的内容并提交到本地仓库:git commit -a -m"修改子分支"
5、将two分支上的修改提交到远程仓库:git push origin two
6、two分支上的修改ok后,切
2)在git 分支选择框中选择项目一步步选择需要的分支
这里先演示切换到master主干分支,点击Checkout切换
3)切换master主干分支成功
2、合并bug分支001到master主干分支
1) 更新本分…
首先先检查切换到b分支中:git checkout b,如果在b分支中会提示
然后 git merge a 如果合并的是线上的版本则是 git merge origin/a
没有冲突的话,就已经合并完成啦
下面是有冲突的解决方法:
这是发生冲突了,冲突文件是dev.txt。
首先我们要检查是哪些文…
如下:两条从公共节点分叉的分支,分别有了新的提交,当使用git merge合并分支时,会在当前master分支commit基础上应用topic在公共节点以后的提交,并生成一条新的提交记录合并信息。
A—B---C topic
/
D—E---F—G master
=====&amp;amp;gt;
A—B---C topic
/
D-…
(1) 主干开发,发现代码质量不强,导致代码提交后阻塞,等待修复问题。
(2)QA 进入了在 Dev 环境对应 Master 分支,由于 Dev 环境一直在合并代码,QA不得不停下来,因为服务有一段时间可能持续在部署。
上述问题就会让我们思考应该如何让我们的分支管理对团队更加有效。
在常见的分…
更新分支
git fetch && git pull --rebase
切换到 master 分支
git checkout <master_branch>
merge 远端分支…
热门文章
分类专栏
最新评论
- Class.forName()用法详解
河北工程大学软件4班张百豪: 确实讲得不错
- java序列化与反序列化全讲解
^O^呵呵^O^: 太帅了,一看就懂
- java序列化与反序列化全讲解
山东-呵呵: 实例代码有没有git地址
- Class.forName()用法详解
Tr1ton: 好文章
- JVM--方法区、永久代、元空间、字符串常量池
FARO_Z: 你这讲的是内存结构了,内存模型是其他东西
您愿意向朋友推荐“博客详情页”吗?
-
强烈不推荐
-
不推荐
-
一般般
-
推荐
-
强烈推荐