合并分散的几个commit
2014-08-05 23:34
5374 查看
git合并分散的几个commit
今天终于完善好了一个补丁,但是很久以前的补丁和最新的这个是实现同样的功能,要把两个相隔甚远的commit合并在一起。以前有过经验,但只是相邻的两个补丁,使用rebase命令。于是上网搜寻一番,发现没什么人写出方便的方法或者说是合适我的方法。有一个是开一条branch,然后reset到以前的那个commit,再两个branch merge。的确是可以这样,但我觉得太间接了。。而且,这样好像只可以把那个commit之前的所有commit合并。
于是想了一会,想出了自认为比较好的方法:)
首先,保存好你所有的修改,使用git add/commit自不必说,但不想commit时可以试试git stash(很好用--),否则rebase前会提示你保存。
然后,执行git log,查看你想修改哪个commit前的全部commit。git rebase -i 加上此commit的ssh。
比如,我想合并第一个和第三个commit,就执行git rebase -i c65b7be68f (就是第四个commit的ssh)
以我为例,执行命令后会出现
下面蓝色的就是各个命令的介绍。我们需要的是合并commit,看squash的介绍 =..., meld into previous commit与之前的commit融合。
我们想合并第一个和第三个补丁,所以把第三个commit提到第二个位置来(就是把第三行挪到第二行),此时如果没有冲突,保存并退出后会执行rebase并提示success。
但这只是改变了commit的顺序,还没有合并。别急,马上就要完成了。再执行一次rebase命令,把第一个commit的pick改成squash,保存退出就会把此commit跟你原来想合并的第三个(现在是第二个)合并起来,并让你修改commit message:-)
大功告成~若是合并第2、5、8的commit也一样操作,挪到一起,比如2,3,4,再把2、3的pick改成squash(其实直接挪动和改就行,不过上面特意分开来说清楚而已),就可以啦~
今天终于完善好了一个补丁,但是很久以前的补丁和最新的这个是实现同样的功能,要把两个相隔甚远的commit合并在一起。以前有过经验,但只是相邻的两个补丁,使用rebase命令。于是上网搜寻一番,发现没什么人写出方便的方法或者说是合适我的方法。有一个是开一条branch,然后reset到以前的那个commit,再两个branch merge。的确是可以这样,但我觉得太间接了。。而且,这样好像只可以把那个commit之前的所有commit合并。
于是想了一会,想出了自认为比较好的方法:)
首先,保存好你所有的修改,使用git add/commit自不必说,但不想commit时可以试试git stash(很好用--),否则rebase前会提示你保存。
然后,执行git log,查看你想修改哪个commit前的全部commit。git rebase -i 加上此commit的ssh。
比如,我想合并第一个和第三个commit,就执行git rebase -i c65b7be68f (就是第四个commit的ssh)
以我为例,执行命令后会出现
下面蓝色的就是各个命令的介绍。我们需要的是合并commit,看squash的介绍 =..., meld into previous commit与之前的commit融合。
我们想合并第一个和第三个补丁,所以把第三个commit提到第二个位置来(就是把第三行挪到第二行),此时如果没有冲突,保存并退出后会执行rebase并提示success。
但这只是改变了commit的顺序,还没有合并。别急,马上就要完成了。再执行一次rebase命令,把第一个commit的pick改成squash,保存退出就会把此commit跟你原来想合并的第三个(现在是第二个)合并起来,并让你修改commit message:-)
大功告成~若是合并第2、5、8的commit也一样操作,挪到一起,比如2,3,4,再把2、3的pick改成squash(其实直接挪动和改就行,不过上面特意分开来说清楚而已),就可以啦~
相关文章推荐
- Git: 合并几个commit为一个commit
- git_合并几个commit
- 合并几个commit为一个commit
- 【转】git合并commit
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- gnome-logs开发记录2--合并git的多个commit--Gnome开发记录
- git合并分支上指定的commit
- git 合并分支出现 Please enter a commit message to explain why this merge is necessary.
- git 操作之合并commit(提交之前本地合并)
- 使用git rebase合并多次commit
- windows 下利用dos命令合并几个txt文件为一个文件
- 给出一个函数来合并两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠
- ArcGIS制图将几个图层的数据合并到…
- 对一个文件的切割分成几个小部分,文件的合并(将部分文件合并)
- git commit 合并
- git 合并分支出现 Please enter a commit message to explain why this merge is necessary.
- jacob合并几个word文件到一个word文件
- git commit 合并
- 多个commit 合并为一个patch
- git如何合并只有两个commit到一个?