精华内容
参与话题
问答
  • git分支合并

    万次阅读 2012-06-16 13:34:42
    原文: ... 一、如何分支合并git中,可以使用git merge和git rebase两个命令来进行分支合并git merge和git rebase在大体上都差不多,下文主要以git merge来例来讲解分支

    原文:  

    http://gitbook.liuhui998.com/3_3.html
    http://gitbook.liuhui998.com/5_3.html
    一、如何分支的合并
    在git中,可以使用git merge 和git rebase两个命令来进行分支的合并。
    git merge 和git rebase在大体上都差不多,下文主要以git merge来例来讲解分支的合并流程。
    如果你想了解分支合并的更多内容,请阅读《git merge简介》,《git rebase简介(基本篇)》和《git rebase简介(高级篇)》。
    git merge命令示例:
    git merge branchname
    这个命令把分支"branchname"合并到了当前分支里面。
    如有冲突(冲突--同一个文件在远程分支和本地分支里按不同的方式被修改了);那么命令的执行输出就像下面一样
    git merge next
     100% (4/4) done
    Auto-merged file.txt
    CONFLICT (content): Merge conflict in file.txt
    Automatic merge failed; fix conflicts and then commit the result.
    在有问题的文件上会有冲突标记,在你手动解决完冲突后就可以把此文件添 加到索引(index)中去,用git commit命令来提交,就像平时修改了一个文件 一样。
    如果你用gitk来查看commit的结果,你会看到它有两个父分支:一个指向当前的分支,另外一个指向刚才合并进来的分支
    二、解决合并中的冲突
    如果执行自动合并没有成功的话,git会在索引和工作树里设置一个特殊的状态, 提示你如何解决合并中出现的冲突。
    有冲突(conflicts)的文件会保存在索引中,除非你解决了问题了并且更新了索引,否则执行 git commit都会失败:
    git commit
    file.txt: needs merge
    如果执行 git status 会显示这些文件没有合并(unmerged),这些有冲突的文件里面会添加像下面的冲突标识符:
    <<<<<<< HEAD:file.txt
    Hello world
    =======
    Goodbye
    >>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt
    你所需要的做是就是编辑解决冲突,(接着把冲突标识符删掉),再执行下面的命令:
    $ git add file.txt
    $ git commit
    注意:提交注释里已经有一些关于合并的信息了,通常是用这些默认信息,但是你可以添加一些你想要的注释。
    上面这些就是你要做一个简单合并所要知道的,但是git提供更多的一些信息来 帮助解决冲突。
    三、撒销一个合并
    如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态:
    git reset --hard HEAD
    或者你已经把合并后的代码提交,但还是想把它们撒销:
    git reset --hard ORIG_HEAD
    但是刚才这条命令在某些情况会很危险,如果你把一个已经被另一个分支合并的分支给删了,那么 以后在合并相关的分支时会出错。
    关于撤销的更多内容请参考《git reset简介
    四、快速向前合并
    还有一种需要特殊对待的情况,在前面没有提到。通常,一个合并会产生一个合并提交(commit), 把两个父分支里的每一行内容都合并进来。
    但是,如果当前的分支和另一个分支没有内容上的差异,就是说当前分支的每一个提交(commit)都已经存在另一个分支里了,git 就会执行一个“快速向前"(fast forward)操作;git 不创建任何新的提交(commit),只是将当前分支指向合并进来的分支。
    五、在合并过程中得到解决冲突的协助
    git会把所有可以自动合并的修改加入到索引中去, 所以git diff只会显示有冲突的部分. 它使用了一种不常见的语法:
    git diff
    diff --cc file.txt
    index 802992c,2b60207..0000000
    --- a/file.txt
    +++ b/file.txt
    @@@ -1,1 -1,1 +1,5 @@@
    ++<<<<<<< HEAD:file.txt
     +Hello world
    ++=======
    + Goodbye
    ++>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt
    回忆一下, 在我们解决冲突之后, 得到的提交会有两个而不是一个父提交: 一个父提交是当前分支提交前的HEAD,; 另外一个父提交是被合并分支的HEAD, 被暂时存在MERGE_HEAD.
    在合并过程中, 索引中保存着每个文件的三个版本. 三个"文件暂存(file stage)"中的每一个都代表了文件的不同版本:
    $ git show :1:file.txt  # 两个分支共同祖先中的版本.
    $ git show :2:file.txt  # HEAD中的版本.
    $ git show :3:file.txt  # MERGE_HEAD中的版本.
    当你使用git diff去显示冲突时, 它在工作树(work tree)暂存2(stage 2)暂存3(stage 3)之间执行三路diff操作, 只显示那些两方都有的块(换句话说, 当一个块的合并结果只从暂存2中得到时, 是不会被显示出来的; 对于暂存3来说也是一样).
    上面的diff结果显示了file.txt在工作树, 暂存2和暂存3中的差异. git不在每行前面加上单个'+'或者'-', 相反地, 它使用两栏去显示差异: 第一栏用于显示第一个父提交与工作目录文件拷贝的差异, 第二栏用于显示第二个父提交与工作文件拷贝的差异. (参见git diff-files中的"COMBINED DIFF FORMAT"取得此格式详细信息.)
    在用直观的方法解决冲突之后(但是在更新索引之前), diff输出会变成下面的样子:
    git diff
    diff --cc file.txt
    index 802992c,2b60207..0000000
    --- a/file.txt
    +++ b/file.txt
    @@@ -1,1 -1,1 +1,1 @@@
    - Hello world
    -Goodbye
    ++Goodbye world
    上面的输出显示了解决冲突后的版本删除了第一个父版本提供的"Hello world"和第二个父版本提供的"Goodbye", 然后加入了两个父版本中都没有的"Goodbye world".
    一些特别diff选项允许你对比工作目录和三个暂存中任何一个的差异:
    $ git diff -1 file.txt      # 与暂存1进行比较
    $ git diff --base file.txt          # 与上相同
    $ git diff -2 file.txt      # 与暂存2进行比较
    $ git diff --ours file.txt          # 与上相同
    $ git diff -3 file.txt      # 与暂存3进行比较
    $ git diff --theirs file.txt    # 与上相同.
    还有,git log和gitk命令也为合并操作提供了特别的协助:
    git log --merge
    gitk --merge
    这会显示所有那些只在HEAD或者只在MERGE_HEAD中存在的提交, 还有那些更新(touch)了未合并文件的提交.
    你也可以使用git mergetool, 它允许你使用外部工具如emacs或kdiff3去合并文件.
     
    每次你解决冲突之后, 应该更新索引:
    git add file.txt
    完成索引更新之后, git-diff(缺省地)不再显示那个文件的差异, 所以那个文件的不同暂存版本会被"折叠"起来.
    六、多路合并
    你可以一次合并多个头, 只需简单地把它们作为git merge的参数列出. 例如,
    $ git merge scott/master rick/master tom/master
    相当于:
    $ git merge scott/master
    $ git merge rick/master
    $ git merge tom/master
    七、子树
    有时会出现你想在自己项目中引入其他独立开发项目的内容的情况. 在没有路径冲突的前提下, 你只需要简单地从其他项目拉取内容即可.
    如果有冲突的文件, 那么就会出现问题. 可能的例子包括Makefile和其他一些标准文件名. 你可以选择合并这些冲突的文件, 但是更多的情况是你不愿意把它们合并. 一个更好解决方案是把外部项目作为一个子目录进行合并. 这种情况不被递归合并策略所支持, 所以简单的拉取是无用的.
    在这种情况下, 你需要的是子树合并策略.
    这下面例子中, 我们设定你有一个仓库位于/path/to/B (如果你需要的话, 也可以是一个URL). 你想要合并那个仓库的master分支到你当前仓库的dir-B子目录下.
    下面就是你所需要的命令序列:
    $ git remote add -f Bproject /path/to/B (1)
    $ git merge -s ours --no-commit Bproject/master (2)
    $ git read-tree --prefix=dir-B/ -u Bproject/master (3)
    $ git commit -m "Merge B project as our subdirectory" (4)
    $ git pull -s subtree Bproject master (5)
    子树合并的好处就是它并没有给你仓库的用户增加太多的管理负担. 它兼容于较老(版本号小于1.5.2)的客户端, 克隆完成之后马上可以得到代码.
    然而, 如果你使用子模块(submodule), 你可以选择不传输这些子模块对象. 这可能在子树合并过程中造成问题.
    译者注: submodule是Git的另一种将别的仓库嵌入到本地仓库方法.
    另外, 若你需要修改内嵌外部项目的内容, 使用子模块方式可以更容易地提交你的修改.

    更多干货,请关注我的微信公众号:红柚甜

    展开全文
  • Git合并分支命令

    2020-06-09 16:02:47
    当下有两个分支 dev 分支 和 master主分支 如果需要将 dev分支合并的代码合并到master 分支 1.先切换到master分支 : git checkout master 2.做合并操作把dev合并到master : git merge dev 3.在当前master分支...

    .当下有两个分支  dev 分支  和 master主分支 如果需要将 dev分支合并的代码合并到 master 分支

    1.先切换到master分支 :  git checkout master

    2.做合并操作把dev合并到master : git merge dev  

    3.在当前master分支可以直接提交代码即可合并完成

    展开全文
  • git合并分支

    万次阅读 2019-08-29 20:50:22
    在开发的过程中我们一般会有开发分支和线上的...git 合并分支到master 假如我们现在在dev分支上,刚开发完项目,执行了下列命令 git add . git commit -m ‘dev’ git push -u origin dev 然后我们要把dev分支的代码...

    在开发的过程中我们一般会有开发分支和线上的主分支,我们一般都是在开发分支去进行开发项目,等指定功能或迭代都实现后才会合并开发分支到主分支上。那么我们今天就来分享如何合并分支。

    场景:
    git 合并分支到master

    实际场景:
    假如我们现在在dev分支上,刚开发完项目,执行了下列命令

    $ git add .
    $ git commit -m 'dev'
    $ git push -u origin dev
    
    然后我们要把dev分支的代码合并到master分支上 该如何?
    1. 首先切换到master分支上
    $ git checkout master
    

    如果是多人开发的话 需要把远程master上的代码pull下来

    $ git pull origin master
    

    如果是自己一个开发就没有必要了,但是为了保险起见还是pull一下

    2.然后我们把dev分支的代码合并到master上
    $ git merge dev
    
    3.然后查看状态
    $ git status
    
    $ On branch master
    $ Your branch is ahead of 'origin/master' by 12 commits.
    $ (use "git push" to publish your local commits)
    $ nothing to commit, working tree clean
    

    上面的意思就是你有12个commit,需要push到远程master上

    4.执行下面命令即可
    $ git push origin master
    

    这样就可以了

    使用webstrom编辑器的朋友可以不用敲命令,直接用编辑器就好了

    第一步:
    在这里插入图片描述

    第二步:
    在这里插入图片描述
    第三步:
    如果有冲突就解决冲突就好了,

    注意:如果后面的分支显示有一个上箭头那就是那个分支还有代码没有上传
    如果后面的分支显示有一个下箭头那就是那个分支还有代码需要更新下来,需要使用ctrl + t拉取最新代码。

    在这里插入图片描述

    展开全文
  • Git合并远程分支

    万次阅读 2018-07-08 21:20:46
    【前言】 众所周知,Git在代码管理方面做的十分的灵活来适应各种各样的版本(正常版本,修复Bug版本等)迭代,业界一般遵从的原则:利用分支进行...下面为大家介绍一下用git命令进行远程分支合并。 【合并远程...

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan

    【前言】

           众所周知,Git在代码管理方面做的十分的灵活来适应各种各样的版本(正常版本,修复Bug版本等)迭代,业界一般遵从的原则:利用分支进行版本迭代,开发完并测试完后,会将代码合并到master分支,然后进行上线;下面为大家介绍一下用git命令进行远程分支合并。

    【合并远程分支】

             一、前置说明:

                   1、演示所用的Git服务端:码云

                   2、目标:将码云上的dev分支中内容合并到master分支上                   

             二、合并步骤

                   1、把代码clone到本地仓库

                        git clone https://gitee.com/zhanghan_123/gittest.git

                   2、在本地创建dev分支并与远程dev分支对应

                        git checkout -b dev origin/dev

                   3、切换到master分支

                        git checkout master

                   4、本地的dev合并到master上(如果遇到冲突解决完后再次提交即可)

                        git merge dev

                 5、推送到远程的master上

                      git push origin master           

    【总结】

             最近版本迭代比较多,对git的代码版本管理的好处体会越来越深刻。

    展开全文
  • git 命令合并分支

    2019-04-25 11:26:00
    需求:将develop合并到master分支 1.查看当前分支(当前分支可以直接查看或者命令查看) git branch或者命令git status *代表当前分支 2.切换分支到master git checkout mater 3.将代码更新到最新版本 ...
  • 1.git rebase:原始的修改log清晰 过程: git branch AAAAA origin/AAAAA git checkout AAAAA git branch develop origin/develop git rebase develop 解决冲突 git rebase –continue 忽略继续 git rebase...
  • git命令合并分支代码

    千次阅读 2019-08-07 17:58:51
    对于复杂的系统,我们可能要开好几个分支来开发,那么怎样使用git合并分支呢? 合并步骤: 1、进入要合并的分支(如开发分支合并到master,则进入master目录) git checkout master git pull 2、查看所有分支是否...
  • git命令git merge 合并分支

    万次阅读 2013-04-12 00:51:56
    git merge 合并分支 发表于 2010年09月2日 由 机器猫 git merge 用来做分支合并,将其他分支中的内容合并到当前分支中。比如分支结构如下: master / C0 ---- C1 ---- C2 ---- C4
  • git 命令合并分支代码

    千次阅读 2018-04-02 09:49:16
    对于复杂的系统,我们可能要开好几个分支来开发,那么怎样使用git合并分支呢?合并步骤:1、进入要合并的分支(如开发分支合并到master,则进入master目录)git pull2、查看所有分支是否都pull下来了git branch -a3...
  • webstorm合并分支,Git合并分支

    千次阅读 2020-04-30 12:21:11
    webstorm可视化操作,命令操作场景:把dev分支的代码合并到V4分支 1、查看是否有更改的代码,如果有可以先暂存到shelf中,可以直接拖动,或者右键-Shelve Changes-Shelve Changes。 1/1git pull 拉一下最新的代码...
  • 在vsCode中用git命令合并分支

    千次阅读 2019-04-18 09:09:57
    提交修改代码到本地仓库 $ git commit -m "修改的东西的描述" 切换到master主分支上 $ git checkout master 拉取主分支上面的代码 ...将master主分支上的代码合并到当前分支 $ git merge master 点在下图中...
  • 常用的git命令: 1.mkdir[文件名] //创建文件。 2 cd[文件名] //到文件路径下 3pwd //查看文件路径 4. git init //创建本地仓库 5 git add 文件名 //提交文件 git add . //提交修改的全部 6 git commit -m...
  • 对于复杂的系统,我们可能要开好几个分支来开发,那么怎样使用git合并分支呢? 合并步骤: 1、进入要合并的分支(如开发分支合并到master,则进入master目录) git checkout master git pull 2、查看所有分支是否...

空空如也

1 2 3 4 5 ... 20
收藏数 16,237
精华内容 6,494
关键字:

git合并