`
zhangyf1987hb
  • 浏览: 80011 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

git merge 合并分支

    博客分类:
  • git
阅读更多

 

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 来完成这次合并提交。

分享到:
评论

相关推荐

    git分支操作.txt

    gti详细的分支操作,在git中,可以使用git merge 和git rebase两个命令来进行分支的合并。 git merge 和git rebase在大体上都差不多,下文主要以git merge来例来讲解分支的合并流程。 如果你想了解分支合并的更多...

    idea+git合并分支解决冲突及详解步骤

    主要介绍了idea+git合并分支解决冲突及详解步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    git常用命令

    git merge dev合并dev分支到当前分支 git branch 查看当前分支(test) git checkout dev 切换到dev分支 git branch 确认当前分支为dev git pull origin dev 拉取dev分支代码 git checkout test 切换到test分支 git...

    git-merge-driver:如何配置自定义git合并驱动程序的示例

    git-merge-driver:如何配置自定义git合并驱动程序的示例

    git-imerge:git的增量合并

    git-imerge-Git的增量合并和变基 增量执行两个分支之间的合并。 如果遇到冲突,请准确找出哪些提交冲突,并一次为用户提供一个成对的冲突以进行解决。 git-imerge有两个主要设计目标: 通过发现并展示可能的最小...

    计算机专业面试可能会遇到的问题

    git merge 分支名称 合并分支(一般都是向master合并) git branch -d 删除分支 git branch -D 强制删除删除分支 解决冲突:两或多个分支编写同一个文件(会报错自行到报错文件选择一个版本留下)

    Ruby实现的删除已经合并的git分支脚本分享

    删除的为Merge(合并)操作的源分支。如果工程正在处于分支A(HEAD为A分支),分支B已经合并到了分支A,即A分支包含了B分支的内容,则会删除B分支。 代码 代码如下: #!/usr/bin/env ruby # encoding: utf-8 ...

    前端面经文档-技术要点-面试编程题-资源-html-前端-web-计算机-计算机前端面试题目-校招-大学生-计算机前端求职面经

    合并分支:git merge 拉取远程代码:git pull 一、本地仓库--&gt;远程仓库的常用命令 新建本地仓库:git init git init 添加到暂存区:git add git add 单个文件名|通配符 #将所有修改加入暂存区 git add . 提交到...

    Git常用得命令

    1.git branch—————&gt;查看本地分支 ...7.git merge 分支名 —————&gt;合并某分支到当前分支 8.git branch -d 分支名 —————-&gt;删除本地分支 9.git push origin 分支名:分支名 ————-&gt;本地分支提交远程 10

    git-cascade:用于在Git中合并的两个扩展脚本

    git forward-merge合并分支而不将其检出。要求Python3.x。 (必须使用python3才能访问;如果您使用的是Windows,则可能需要进行设置。)安装不幸的是,安装是手动的,并且基本上涉及到将两个脚本都放在$PATH中的...

    git指令快速查询-代码管理工具

    git指令快速查询 git branch 查看本地所有分支 git status 查看当前状态 ...git merge origin/dev 将分支dev与当前分支进行合并 git checkout dev 切换到本地dev分支 git remote show 查看远程库

    git-merge-forward:将按时间顺序分开的分支合并到“主”

    Git合并前进将按时间顺序分开的分支合并到“主”用法在您喜欢的任何地方克隆这个婴儿npm install chmod 755 git-merge-forward.js 将回购位置放在路径中,或者从路径中已经存在的目录(例如bin )中将符号链接git-...

    Git的merge和rebase你真的了解吗?

    分支管理:Git的分支管理功能强大,开发者可以创建、合并、删除分支,轻松进行并行开发。 协同开发:Git的分布式特性使得多人协同开发变得容易。团队成员可以在本地进行代码修改和提交,然后将代码推送到中央仓库...

    composer-git-merge-driver:自定义git合并驱动程序,以最小化composer.json和composer.lock文件中的合并冲突

    但是,如果在两个分支的require节中添加了新的不同依赖项,则合并驱动程序将理解两者都应保留,而标准git merge驱动程序将触发合并冲突,因为在两个分支中都编辑了同一行。 更一般而言,所有对象数据结构都会优雅...

    git-when-merged, 确定特定提交合并到 git branch的时间.zip

    git-when-merged, 确定特定提交合并到 git branch的时间 git when-mergedgit when-merged 帮助你了解什么时候以及为何将提交合并到分支中。如果使用标准的Git工作流,则为你正在处理的每个特性创建一个特性分支。 当...

    有关于git的学习资料分享

    新建分支: git checkout -b dev1 git branch -d dev1 切换分支: git checkout master 合并分支: git merge dev1

    100个Git常用命令及用法-IT老卢.pdf

    git命令,部分如下: 创建与克隆 1.git init:在当前目录初始化 Git 仓库 2.git clone &lt;url&gt;:从远程 Git 仓库克隆一个...9.git merge &lt;branch&gt;:将指定分支合并到当前分支 10.git branch -d &lt;branch&gt;:删除指定分支

    最新git项目开发中一键发起merge request工具,自动识别本地环境,支持windows、Linux、Mac,包含使用教程和资料.sh

    # 进入到Git管理的项目根目录,执行如下命令发起 merge request 请求,默认请求合并到 test 分支,-a 用来指定审核委派人, # 执行 merge 等同于 merge test,或执行 merge 其他远程分支名,具体用法如下: # merge ...

    git版本管理使用规范-团队开发规范文档

    关于git项目管理分支说明。 2.1. master主干 命名:master 说明:发布分支 master为程序主干目录,开发新需求需从master打新分支,开发完成合并回master发测试包,测试完成需打新的tag包,tag包申请上线发布 2.2. ...

Global site tag (gtag.js) - Google Analytics