git merge

git merge合并分支,解决冲突

Git 专栏收录该内容
11 篇文章 0 订阅

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分支,继续我们的新分支开发:


       
       
  1. $ git switch -c feature1
  2. Switched to a new branch 'feature1'

修改readme.txt最后一行,改为:

Creating a new branch is quick AND simple.
       
       

feature1分支上提交:


       
       
  1. $ git add readme.txt
  2. $ git commit -m "AND simple"
  3. [feature1 14096d0] AND simple
  4. 1 file changed, 1 insertion(+), 1 deletion(-)

切换到master分支:


       
       
  1. $ git switch master
  2. Switched to branch 'master'
  3. Your branch is ahead of 'origin/master' by 1 commit.
  4. (use "git push" to publish your local commits)

Git还会自动提示我们当前master分支比远程的master分支要超前1个提交。

master分支上把readme.txt文件的最后一行改为:

Creating a new branch is quick & simple.
       
       

提交:


       
       
  1. $ git add readme.txt
  2. $ git commit -m "& simple"
  3. [master 5dc6824] & simple
  4. 1 file changed, 1 insertion(+), 1 deletion(-)

现在,master分支和feature1分支各自都分别有新的提交,变成了这样:

这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:


       
       
  1. $ git merge feature1
  2. Auto-merging readme.txt
  3. CONFLICT (content): Merge conflict in readme.txt
  4. Automatic merge failed; fix conflicts and then commit the result.

果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件:


       
       
  1. $ git status
  2. On branch master
  3. Your branch is ahead of 'origin/master' by 2 commits.
  4. (use "git push" to publish your local commits)
  5. You have unmerged paths.
  6. (fix conflicts and run "git commit")
  7. (use "git merge --abort" to abort the merge)
  8. Unmerged paths:
  9. (use "git add <file>..." to mark resolution)
  10. both modified: readme.txt
  11. no changes added to commit (use "git add" and/or "git commit -a")

我们可以直接查看readme.txt的内容:


       
       
  1. Git is a distributed version control system.
  2. Git is free software distributed under the GPL.
  3. Git has a mutable index called stage.
  4. Git tracks changes of files.
  5. <<<<<<< HEAD
  6. Creating a new branch is quick & simple.
  7. =======
  8. Creating a new branch is quick AND simple.
  9. >>>>>>> feature1

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

Creating a new branch is quick and simple.
       
       

再提交:


       
       
  1. $ git add readme.txt
  2. $ git commit -m "conflict fixed"
  3. [master cf810e4] conflict fixed

现在,master分支和feature1分支变成了下图所示:

git-br-conflict-merged

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


       
       
  1. $ git log --graph --pretty=oneline --abbrev-commit
  2. * cf810e4 (HEAD -> master) conflict fixed
  3. |\
  4. | * 14096d0 (feature1) AND simple
  5. * | 5dc6824 & simple
  6. |/
  7. * b17d20e branch test
  8. * d46f35e (origin/master) remove test.txt
  9. * b84166e add test.txt
  10. * 519219b git tracks changes
  11. * e43a48b understand how stage works
  12. * 1094adb append GPL
  13. * e475afc add distributed
  14. * eaadf4e wrote a readme file

最后,删除feature1分支:


       
       
  1. $ git branch -d feature1
  2. Deleted branch feature1 (was 14096d0).

 

</article>
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

GIT 分支 合并冲突 解决
git中的 分支十分轻量,因此我们在使用 git的时候会频繁的用到 分支,不可避免的需要进行 分支 合并。 在 git合并分支有两种选择: merge 和 rebase。但是,无论哪一种,都有可能产生 冲突。 一、 冲突产生的原因 因此我们先来看一下 冲突是如何产生的:

如上图所示,将feature分支合并到master,我们需要一个比较的标准,如果只是3和6比较,那么3与6相比,添加了一个文件,也可以说成是6与…


Git整合 分支的两种方法—— 合并( git merge)与变基( git rebase)的区别
用例子来理解,图片+命令+文字。 Git整合 分支的两种方法—— 合并( git merge)与变基( git rebase)的区别。 变基的原理。什么时候能使用变基。
表情包
插入表情
还能输入1000个字符
图解4种 git 合并分支方法(转载)_明明如月的技术博客-CSD...
1-10
本文系转载原文地址:http://yanhaijing.com/ git/2017/07/14/four-method-for- git- merge/ 本文作者将四种 git 合并分支的方法采用动图的方式进行演示,非常通俗易懂。 非常喜欢,转载在此。
gitmerge 分支 合并_**My Coding Family**
1-7
//举例:从 bulltest 分支 合并到 bull 分支 git checkout bull git pull git merge bulltest git push
gitlab 分支 合并 冲突处理
1、使用 gitlab 创建 合并请求

master 合并到 branch_test --> compare branches and continue --> submit merge request

提示:合并冲突

2、使用 idea 打开项目。

(1)执行:git fetch origin

(2)切换到 master 分支,更新到最新版本。

(3)切换到…


图解4种 git 合并分支方法
有时候我们会后悔,有时候我们会想回到过去,有时候我们想改变历史,然而在我们这个世界,目前来看是无法回到过去改变历史的 但在 git的世界里,一切皆有可能,我们可以在多维空间里任意切换,随意改变一个宇宙的时间线,只要我们愿意, git分支就是这么神奇 然而很多时候你以为你改变了历史,不为人知,那个宇宙并没有消失,而是遗失在了 git的世界里,有...
Git mergegit branch 分支合并_专注于互联网架构技...
1-8
28 git checkout -b issueXXXX 29 30#3、切换到生产环境 分支product,将2中的开发工作 分支branch_pack 合并进来,然后推送到生产服务器上 31 git checkout product 32# 合并 33 git merge branch_pach ...
git merge 合并分支_weixin_30381793的博客
1-8
如果由 冲突,即Y和X 分支同时该了一个文件中的同一行, git会提示 合并 冲突,同时 git会修改你本地的文件将 冲突的地方指示出来。这时,可以运行 git mergetool,会启动默认的 mergeTool,选择自己需要保留的版本,保存关闭工具,进行commit即可。
git 分支 合并指定代码_ git merge 分支 合并指定 合并内容
背景在 分支 合并可能会涉及很多功能,比如:branch-A可能含有feature-1,feature-2 ... feature-5等5个功能的需求开发,branch-B现在需要合入branch-A的feature-1但是不想合入其他特性需求,即我在 分支 合并的时候只想 合并一分部内容。如果直接 git merge的话,会将两个 分支的所有内容进行比较 合并,会将feature-1... feature-5同...
Git 合并分支时,代码 冲突解决办法
12-28 2999
IDEA将 分支代码 合并到主 分支

1、在主分支msater中项目右键git->Respository->pull

分支上会自动合并分支的代码:

2、出现冲突文件

冲突提示:等号上边时当前分支代码,下边时合并分支的代码.

另一中方法是点击冲突文件右键->Git->Resove Conflicts

合并后的代码:

https://blog.csdn.net/su1573/article/details/91990437

source…


... 分支合并的两种方法_m0_38022029的博客_ git 分支 合并
1-14
git checkout bugFix; git merge mast er 2. git rebase 第二种 合并分支的方法是 git rebase。rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。
git 分支 合并 冲突 解决方法及步骤
07-02 3137
下图是我的 分支 冲突图,在3点后,从develop 分支分出一个release 分支来,release 分支更新了5次最后 合并到了mast er 分支,而没有往develop 分支 merge,所以导致mast er 分支和develop 分支版本不一样了,而由从3点出的develop 分支拉出一个feature 分支来,进行了两次更新,并 合并到了develop 分支上,此时再将develop 分支 merge到mast er分支上就出现了版本 冲突

开始说解决步骤:

步骤1. 本地打开git GUI,本地checkout到dev


12.使用 git merge 合并分支
02-19 5261
Fast-forward 合并

假设我们在之前创建的 location-modules 分支上添加的新功能也想应用到 master 分支上,这样我们可以做一个合并的操作。用的是 git merge 命令。
首先切换到 master 这个分支上,可以用一个 git branch 查看一下当前的分支,如果在其它的分支上,用 git checkout 切换到 master 这个分支上来 git che…


Git 一个 分支改动后 pull 到另外一个 分支
一、开发 分支(dev)上的代码达到上线的标准后,要 合并到 mast er 分支

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


git权威指南总结七: git merge 冲突 解决
11-19 7万+
git pull拉回操作中的 合并在前面一个博客,我们将到了非快进式推送的非强制性的另一种 解决办法,那就是先拉回在提交,这里的拉回其实包含了两个操作:获取远程仓库的数据,将本地数据进行 合并。可以这样写: git pull = git fetch + git merge git merge命令用于 合并分支,它的命令行格式为: git merge [options...] <commit>...大多数情况下的合
Git merge 合并分区详解
热门推荐
03-06 9万+
git merge 用来做 分支 合并,将其他 分支中的内容 合并到当前 分支中。比如 分支结构如下:
                    mast<em>er</em>
                     /

C0 ---- C1 ---- C2 ---- C4

C3 ---- C5


Git合并分支---- git merge命令应用的三种情景
07-31 5万+
文章目录 git merge 命令应用的三种情景:一、“快进”。(无 冲突)二、非“快进”,修改不同文件。(无 冲突)三、非“快进”,修改相同文件。(有 冲突)

git merge 命令应用的三种情景:
一、“快进”。(无冲突)

master分支

假设现在只有一个默认的 master 分支,并提交了3次,B0、B1和B2都是提交对象。

首先要清楚,每次产生的提交对象会包含一个指向上次提交对象(父对…


git merge 分支合并_ Git遇到 冲突时的 分支 合并
有时候 合并操作并不会如此顺利。如果在不同的 分支中都修改了同一个文件的同一部分, Git 就无法干净地把两者合到一起(译注:逻辑上说,这种问题只能由人来裁决。)。如果你在 解决问题 #53 的过程中修改了hotfix中修改的部分,将得到类似下面的结果:$ git merge iss53Auto- mer ging index.html CONFLICT (content): Merge ...
git merge 合并分支
最新发布
08-11 100
一、本文是从mast er 分支拉出的two,然后 合并回mast er

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后,切


idea+ git 合并分支 解决 冲突及详解步骤
06-15 6万+
Git详解参考:https://blog.csdn.net/su1573/article/details/91988523 1、 切换 分支 1)在idea页面右下角点击 分支

2)在git 分支选择框中选择项目一步步选择需要的分支
这里先演示切换到master主干分支,点击Checkout切换

3)切换master主干分支成功

2、合并bug分支001到master主干分支

1) 更新本分…


git merge 合并分支解决 冲突
有 a 分支和b 分支,a 分支为同事的 分支,b 分支为自己的 分支,目的将a 分支 合并到b 分支

首先先检查切换到b分支中:git checkout b,如果在b分支中会提示

然后 git merge a 如果合并的是线上的版本则是 git merge origin/a

没有冲突的话,就已经合并完成啦

下面是有冲突解决方法:

这是发生冲突了,冲突文件是dev.txt。

首先我们要检查是哪些文…


git工具学习笔记: 合并分支 merge
09-21 4299
merge 1. 分支 合并

如下:两条从公共节点分叉的分支,分别有了新的提交,当使用git merge合并分支时,会在当前master分支commit基础上应用topic在公共节点以后的提交,并生成一条新的提交记录合并信息。

A—B---C topic
/
D—E---F—G master

=====&amp;amp;amp;gt;
A—B---C topic
/
D-…


实战 Git 分支策略
02-16 127
项目上总有那么多不尽人意的地方,导致各方面出现问题。 分支管理策略就是其中一个经常遇到的问题。例如:

(1) 主干开发,发现代码质量不强,导致代码提交后阻塞,等待修复问题。
(2)QA 进入了在 Dev 环境对应 Master 分支,由于 Dev 环境一直在合并代码,QA不得不停下来,因为服务有一段时间可能持续在部署。

上述问题就会让我们思考应该如何让我们的分支管理对团队更加有效。

在常见的分…


git merge 用法
04-04 1万+
怎么 merge 首先更新本地 分支和远程 分支为最新代码, 分别对要参与 merge 的两个 分支做如下两个操作: 切换 分支 git checkout <branch_name>

更新分支
git fetch && git pull --rebase

切换到 master 分支
git checkout <master_branch>

merge 远端分支


©️2021 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值