1.分支间的合并

1)直接合并:把两个分支上的历史轨迹合二为一(就是所以修改都全部合并)

zhangshuli@zhangshuli-MS-:~/myGit$ vim merge.txt
zhangshuli@zhangshuli-MS-:~/myGit$ git st
g# On branch thrid
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# merge.txt
nothing added to commit but untracked files present (use "git add" to track)
zhangshuli@zhangshuli-MS-:~/myGit$ git add .
zhangshuli@zhangshuli-MS-:~/myGit$ git commit -m "merge"
[thrid 6436f0b] merge
files changed, insertions(+), deletions(-)
create mode merge.txt
zhangshuli@zhangshuli-MS-:~/myGit$ git log -
commit 6436f0b6bbe0da18ce65e90dd7ea90cf4008bbe3
Author: zhangshuli <zhangshuli@vanzotec.cn>
Date: Sat Feb :: + merge
zhangshuli@zhangshuli-MS-:~/myGit$ git checkout parent
Switched to branch 'parent'
zhangshuli@zhangshuli-MS-:~/myGit$ git merge thrid
Merge made by recursive.
merge.txt | +
mysite-1.0.tar.gz | Bin -> bytes
mysite-1.0.zip | Bin -> bytes
files changed, insertions(+), deletions(-)
create mode merge.txt
create mode mysite-1.0.tar.gz
create mode mysite-1.0.zip
zhangshuli@zhangshuli-MS-:~/myGit$ git br -av
* parent 44d288e Merge branch 'thrid' into parent
son 3a1cbb4 ccc add
thrid 6436f0b merge
zhangshuli@zhangshuli-MS-:~/myGit$ ls
aaa.txt bbb.txt ccc.txt ddd.txt merge.txt mysite-1.0.tar.gz mysite-1.0.zip
zhangshuli@zhangshuli-MS-:~/myGit$ git log -
commit 44d288e4316e47ac9b6e3ee6a4152aceff5d17ce
Merge: e2e09c4 6436f0b
Author: zhangshuli <zhangshuli@vanzotec.cn>
Date: Sat Feb :: + Merge branch 'thrid' into parent
zhangshuli@zhangshuli-MS-:~/myGit$

2)压合合并:一分支若干提交合并为一个,然后合并到另外的分支上(squash)

zhangshuli@zhangshuli-MS-:~/myGit$ git branch
parent
son
* third
zhangshuli@zhangshuli-MS-:~/myGit$ ls
aaa.txt bbb.txt
zhangshuli@zhangshuli-MS-:~/myGit$ vim ccc.txt
zhangshuli@zhangshuli-MS-:~/myGit$ vim ddd.txt
zhangshuli@zhangshuli-MS-:~/myGit$ git st
# On branch third
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# ccc.txt
# ddd.txt
nothing added to commit but untracked files present (use "git add" to track)
zhangshuli@zhangshuli-MS-:~/myGit$ git add ccc.txt
zhangshuli@zhangshuli-MS-:~/myGit$ git commit -m "commit ccc.txt"
[third 6a74382] commit ccc.txt
files changed, insertions(+), deletions(-)
create mode ccc.txt
zhangshuli@zhangshuli-MS-:~/myGit$ git log -
commit 6a74382c9c481515cd70136ce3212ace7aa1c50e
Author: zhangshuli <zhangshuli@vanzotec.cn>
Date: Sat Feb :: + commit ccc.txt
zhangshuli@zhangshuli-MS-:~/myGit$ git st
# On branch third
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# ddd.txt
nothing added to commit but untracked files present (use "git add" to track)
zhangshuli@zhangshuli-MS-:~/myGit$ git add .
zhangshuli@zhangshuli-MS-:~/myGit$ git commit -m "commit ddd"
[third 618011f] commit ddd
files changed, insertions(+), deletions(-)
create mode ddd.txt
zhangshuli@zhangshuli-MS-:~/myGit$ git log -
commit 618011fc23e6fe8108e830e2812a298ad217d0cb
Author: zhangshuli <zhangshuli@vanzotec.cn>
Date: Sat Feb :: + commit ddd
zhangshuli@zhangshuli-MS-:~/myGit$ git checkout parent
Switched to branch 'parent'
zhangshuli@zhangshuli-MS-:~/myGit$ git merge --squash third
Updating 2a30fca..618011f
Fast-forward
Squash commit -- not updating HEAD
ccc.txt | +
ddd.txt | +
files changed, insertions(+), deletions(-)
create mode ccc.txt
create mode ddd.txt
zhangshuli@zhangshuli-MS-:~/myGit$ git st
# On branch parent
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: ccc.txt
# new file: ddd.txt
#
zhangshuli@zhangshuli-MS-:~/myGit$ git commit -m "yahe"
[parent 02906a1] yahe
files changed, insertions(+), deletions(-)
create mode ccc.txt
create mode ddd.txt
zhangshuli@zhangshuli-MS-:~/myGit$ git log -
commit 02906a15dc15be5fefd5e41dcd3977bb2f762cff
Author: zhangshuli <zhangshuli@vanzotec.cn>
Date: Sat Feb :: + yahe
zhangshuli@zhangshuli-MS-:~/myGit$

从上面我们可以看出来,所谓的压合分支,其实也是把另一个分支的状态全部移到另一个分支上,只是它并不是merge,而是把提交转化为变更存储到目标分支缓存,让你统一处理

3)捡选合并(cherry-picking):把某个提交进行合并

zhangshuli@zhangshuli-MS-:~/myGit$ git log -
commit 068698c5c848ded943f3454691f420136a2930ee
Author: zhangshuli <zhangshuli@vanzotec.cn>
Date: Sat Feb :: + cherry-pick
zhangshuli@zhangshuli-MS-:~/myGit$ git checkout parent
Switched to branch 'parent'
zhangshuli@zhangshuli-MS-:~/myGit$ git cherry-pick 068698c5c848ded943f3454691f420136a2930ee
Finished one cherry-pick.
[parent 1c33f51] cherry-pick
files changed, insertions(+), deletions(-)
zhangshuli@zhangshuli-MS-:~/myGit$ ls
aaa.txt bbb.txt ccc.txt ddd.txt
zhangshuli@zhangshuli-MS-:~/myGit$ git log -
commit 1c33f513af17f21dd157522b98a2027047d599c3
Author: zhangshuli <zhangshuli@vanzotec.cn>
Date: Sat Feb :: + cherry-pick
zhangshuli@zhangshuli-MS-:~/myGit$ ls
aaa.txt bbb.txt ccc.txt ddd.txt
zhangshuli@zhangshuli-MS-:~/myGit$ vim aaa.txt
zhangshuli@zhangshuli-MS-:~/myGit$

它使用的命令是cherry-pick 而且参数已经不是branch 而是节点号了

如果你想cherry-pick某个提交,但是又不立刻把这个提交在本分支上提交,你可以使用参数-n 它的作用就和压合合并效果类似

zhangshuli@zhangshuli-MS-:~/myGit$ git cherry-pick -n 068698c5c848ded943f3454691f420136a2930ee
Finished one cherry-pick.
zhangshuli@zhangshuli-MS-:~/myGit$ git st
# On branch parent
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: aaa.txt
#
zhangshuli@zhangshuli-MS-:~/myGit$ git commit

2.合并分支冲突的处理

这时候只要执行命令git mergetool就行了,它会自动打开一个merge工具

git -处理分支合并的更多相关文章

  1. git 代码分支合并merge提交新修改远程以及本地分支

    第一步:创建本地分支 点击右键选择TortoiseGit,选择Create Branch…,在Branch框中填写新分支的名称(若选中”switch to new branch”则直接转到新分支上,省 ...

  2. Git dev分支合并到master分支完美实战

    aa@aa-PC MINGW64 /f/online-center/cloud/server-functions_services (master)                          ...

  3. Git设置分支保护实现CodeReview卡点

    # Git设置分支保护实现CodeReview卡点 > From:https://blog.csdn.net/crisschan/article/details/100922668 > G ...

  4. 分支合并git checkout adview git merge adview3

    分支合并 git checkout adview git merge adview3

  5. Git 分支合并

    理解核心 Git最初只有一个分支,所有后续分支都是直接或间接的从这个分支切出来的. 在任意两个分支上,向前追溯提交记录,都能找到一个最近的提交同时属于这两个分支,这个提交就是两个分支的分叉节点 分支合 ...

  6. Git入门指南十一:Git branch 分支与合并分支

    十五. Git branch 分支 查看当前有哪些branch bixiaopeng@bixiaopengtekiMacBook-Pro xmrobotium$ git branch * master ...

  7. git的工作流程(分支合并)

    git支持很多种工作流程,我们采用的一般是这样,远程创建一个主分支,本地每人创建功能分支,日常工作流程如下: 去自己的工作分支$ git checkout work 工作.... 提交工作分支的修改$ ...

  8. Git的分支与合并

    在Git里面我们可以创建不同的分支,来进行调试.发布.维护等不同工作,而互不干扰.下面我们还是来创建一个试验仓库,看一下Git分支运作的台前幕后: $rm -rf test_branch_proj $ ...

  9. Git分支合并选择

    用Git进行多人协作开发时,必然会合并代码,解决冲突.然而合并代码也是需要点技巧的,如果对一些关键命令没有理解去使用的话,git的版本演进路线就会变得很乱,从而造成了日后维护的一些麻烦. Git上合并 ...

随机推荐

  1. 八 rowkey设计 几种方法

    简单来讲,rowkey就是 KeyValue 中的key     rowkey设计之 尽量散列设计 RowKey         如第三部分第六中讲到,如果数据都是有序的存储到一个特定的范围内,将会存 ...

  2. MyEclipse连接不上genymotion的解决方式

    奇怪的是我的MyEclipse有时候连接得上genymotion,有时候又连接不上.之前连接不上的时候,就直接用真机调试,因此出现这个问题非常久了一直都没有去找解决方式.今天认真的反省了自己,再也不能 ...

  3. CoAP与物联网系统

    CoAP简单介绍 引自维基百科上的介绍,用的是谷歌翻译... 受约束的应用协议(COAP)是一种软件协议旨在以很easy的电子设备.使他们能够在互联网上进行交互式通信中使用. 它特别针对小型低功率传感 ...

  4. IComparable接口实现自定义类型的排序

    IComparable接口实现自定义类型的排序   CompareTo(Object) 方法的实现必须返回有三个值之一 如下表中所示. 返回值 参数比较 大于0 x>y 等于0 x=y 小于0 ...

  5. LSTM模型

    摘自:http://www.voidcn.com/article/p-ntafyhkn-zc.html (二)LSTM模型 1.长短期记忆模型(long-short term memory)是一种特殊 ...

  6. 7. java操作MongoDB,采用_id查询

    转自:https://www.2cto.com/database/201704/633262.html mongodb命令行_id查询方法 直接用ObjectId() db.getCollection ...

  7. 超级硬件代理解决企业Web提速上网问题

    超级硬件代理解决企业Web提速上网问题 需求分析: XX集团是五家企业重组建立的特大型工程勘察设计咨询企业,下设10多个分公司,上网人数众多.有多台WEB server,对外服务,访问量及大.以前无论 ...

  8. excel导入数据的

    .aspx 文件 <form id="form1" runat="server"> <div> <asp:FileUpload I ...

  9. iscsi共享存储的简单配置和应用

    1.环境介绍 SCSI(Small Computer System Interface)是块数据传输协议,在存储行业广泛应用,是存储设备最基本的标准协议.从根本上说,iSCSI协议是一种利用IP网络来 ...

  10. 今日SGU 5.20

    SGU 404 题意:.. 收获:取模 #include<bits/stdc++.h> #define de(x) cout<<#x<<"="& ...