用于记录阅读 Git 原理详解及实用指南 <https://juejin.im/book/5a124b29f265da431d3c472e> 之后的笔记备忘。

* git merge some_branch 的意思是将 some_branch 这一分支与 HEAD 指向的某一分支合并, HEAD 指向的可以是
master ,也可以是其他 branch
*
当只需要合并某一分支的特定部分的 commits 到另一分支时,就可以参考 Git合并特定commits
<http://blog.csdn.net/ybdesire/article/details/42145597> 到另一个分支
这篇文章。根据这篇文章,可以知道,以下图为例,可以只把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 的。

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信