用于记录阅读 Git 原理详解及实用指南 之后的笔记备忘。
git merge some_branch的意思是将some_branch这一分支与HEAD指向的某一分支合并,HEAD指向的可以是master,也可以是其他branch当只需要合并某一分支的特定部分的
commits到另一分支时,就可以参考 Git合并特定commits 到另一个分支 这篇文章。根据这篇文章,可以知道,以下图为例,可以只把5合并到master上,这时master上就会出现一个新的commit点,使用git cherry-pick params( params 可以是多个参数,中间用空格隔开就行,记得要先切换到目标分支)
合并之后,如下图,出现一个新的commit点,但是原来branch1上的5还是会存在。
而如果需要合并branch1上的6到7的到master的话(即合并一连串到 commits),就需要先以branch1为基础,新建一条分支(假设为tmp_branch,且要注意先切换到branch1分支),使用的命令为
git checkout -b tmp_branch 7的引用或者SHA-1码(这里的命令在新建了分支之后会直接切换到该分支)
然后使用命令
git rebase --onto master 6的引用或者SHA-1码^(这里要注意别落下了 ^ 符号,如果少了就会只把7合并到master,即目标commit之后的)
然后又要切回到master,执行
git merge tmp_branch
这样就可以了,之后再把tmp_branch分支删除即可。(其实这里的操作本质上是涉及到了git rebase)git reset --soft HEAD^中除了 HEAD 和它所指向的 branch1 被移动到 HEAD^ 之外,原先 HEAD 处 commit 的改动也会被放进暂存区,注意到这里是会被存放到暂存区(就相当于执行了add但未执行commit的状态),然后如果再次commit到话就又会恢复reset之前到样子,除了 commit 时填写的提交信息与 commit 提价后对应的 SHA-1 码会不同。
而--mixed是相当于执行add之前的状态,但是工作区的变化还是在(比如新增了一个文件,commit之后执行git reset --mixed HEAD^,文件还是在,但是需要重新add)。
而--hard会把工作区的改动也清空(比如新增了一个文件,commit之后执行git reset --hard HEAD^, 新增的文件也会被删除)。使用
stash临时存放工作目录的改动,这里需要注意,是临时存放被add但是未被commit的。
本文详细介绍了如何使用Git进行分支的特定提交合并,包括单一提交和连续提交的合并方式,并解释了如何通过不同的git reset选项实现代码回退。
1002

被折叠的 条评论
为什么被折叠?



