git -处理分支合并
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 -处理分支合并的更多相关文章
- git 代码分支合并merge提交新修改远程以及本地分支
第一步:创建本地分支 点击右键选择TortoiseGit,选择Create Branch…,在Branch框中填写新分支的名称(若选中”switch to new branch”则直接转到新分支上,省 ...
- Git dev分支合并到master分支完美实战
aa@aa-PC MINGW64 /f/online-center/cloud/server-functions_services (master) ...
- Git设置分支保护实现CodeReview卡点
# Git设置分支保护实现CodeReview卡点 > From:https://blog.csdn.net/crisschan/article/details/100922668 > G ...
- 分支合并git checkout adview git merge adview3
分支合并 git checkout adview git merge adview3
- Git 分支合并
理解核心 Git最初只有一个分支,所有后续分支都是直接或间接的从这个分支切出来的. 在任意两个分支上,向前追溯提交记录,都能找到一个最近的提交同时属于这两个分支,这个提交就是两个分支的分叉节点 分支合 ...
- Git入门指南十一:Git branch 分支与合并分支
十五. Git branch 分支 查看当前有哪些branch bixiaopeng@bixiaopengtekiMacBook-Pro xmrobotium$ git branch * master ...
- git的工作流程(分支合并)
git支持很多种工作流程,我们采用的一般是这样,远程创建一个主分支,本地每人创建功能分支,日常工作流程如下: 去自己的工作分支$ git checkout work 工作.... 提交工作分支的修改$ ...
- Git的分支与合并
在Git里面我们可以创建不同的分支,来进行调试.发布.维护等不同工作,而互不干扰.下面我们还是来创建一个试验仓库,看一下Git分支运作的台前幕后: $rm -rf test_branch_proj $ ...
- Git分支合并选择
用Git进行多人协作开发时,必然会合并代码,解决冲突.然而合并代码也是需要点技巧的,如果对一些关键命令没有理解去使用的话,git的版本演进路线就会变得很乱,从而造成了日后维护的一些麻烦. Git上合并 ...
随机推荐
- 题解 P2068 【统计和】
这是一道单点修改,区间查询的线段树. 需要实现的操作有三个:建树,更新与查询. 首先,线段树用结构体维护,如下: struct node { int l, r; int val; } tree[max ...
- Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- ArcGIS api for javascript——用缓存区查询地图
描述 本例展示了如何在另外一个任务里使用一个任务的结果.单击地图查看被单击的点的1公里范围内的缓存(如果需要可以修改这个默认的缓存距离).也可以看缓存区的这些点的人口普查街区信息.单击一个点查看更多的 ...
- 第6章8节《MonkeyRunner源代码剖析》Monkey原理分析-事件源-事件源概览-小结
本章我们重点环绕处理网络过来的命令的MonkeySourceNetwork这个事件源来阐述学习Monkey是怎样处理MonkeyRunner过来的命令的.以下总结下MonkeyRunner从启动Mon ...
- 22.dll调用技术
1.dll文件: #include <Windows.h> _declspec(dllexport) void message_hello() { MessageBoxA(, ); } _ ...
- SQL调用Webservices
IF NOT object_id('proc_CallWebServices') IS NULL DROP PROCEDURE proc_CallWebServices GO CREATE PROCE ...
- 基于Java的开源3D游戏引擎jMonkeyEngine
jMonkeyEngine简介 jMonkeyEngine是一款纯Java语言编写的游戏引擎,继承了Java应用跨平台的特性,而且是开放源代码的,遵循BSD开源协议,BSD开源协议用一句简单的话概括就 ...
- tomcat-servlet-client
headfirst的一个图,但解决了我的一个疑问
- jquery.base64.js
(function($) { $.base64 = function(options) { var defaults = { data:"", type:0, unicode:tr ...
- 127.0.0.1和localhost和本机IP三者的区别!
1, 先来说下回送地址(Loopback Address): 回送地址是主机用于向自身发送通信的一个特殊地址(也就是一个特殊的目的地址).可以这么说:同一台主机上的两项服务若使用回送地址而非分配的主机 ...