Git的骚操作

Git 命令中的 merge、rebase、reset、revert、cherry-pick 等常用骚操作的具体原理


1.git merge


  • Fast-forward (–ff)
    当当前分支与正在合并的分支相比没有额外提交时,可能会发生快速向前合并,Git首先尝试执行最简单的选择 Fast-forward 模式合并不会创建新的提交,而是合并当前分支中合并的分支上的提交
    master: git merge dev
    Git的骚操作
  • No-fast-foward (–no-ff)
    如果您当前的分支与要合并的分支相比没有任何额外的提交,那就太好了,但不幸的是,这种情况很少发生!如果我们在当前分支上提交了要合并的分支没有的更改,git将执行No-fast-foward 合并。使用No-fast-foward合并,Git在活动分支上创建一个新的合并提交。提交的父提交指向活动分支和要合并的分支!
    Git的骚操作

2.git rebase



3.git reset


soft reset 软重置
我们可以撤销提交记录,但是保留新建的文件。
Git的骚操作
Hard reset硬重置
硬重置时:无需保留提交已有的修改,直接将当前分支的状态恢复到某个特定提交下。需要注意的是,硬重置还会将当前工作目录(working directory)中的文件、已暂存文件(staged files)全部移除!
Git的骚操作


4.git revert


举个例子,我们在 ec5be 上添加了 index.js 文件。之后发现并不需要这个文件。那么就可以使用 git revert ec5be 指令还原之前的更改。
Git的骚操作


5.git cherry-pick


举个例子:dev 分支上的 76d12 提交添加了 index.js 文件,我们需要将本次提交更改加入到 master 分支,那么就可以使用 git cherry-pick 76d12 单独检出这条记录修改。


6.git fetch


使用 git fetch 指令将远程分支上的最新的修改下载下来。


7.git pull


git pull 指令实际做了两件事:git fetch 和 git merge。


8.git reflog


git reflog 用于显示所有已执行操作的日志!包括合并、重置、还原,也就是记录了对分支的一切更改行为。

git reset [email protected]{1} 将HEAD指针回退到[email protected]{1}这个commit上
Git的骚操作

转载地址:https://mp.weixin.qq.com/s/sCi_DE1urP1OE13wbgFHUg