小姐姐用动画图解Git命令,一看就懂!

不管是开发、运维,仍是测试,你们都知道Git在平常工做中的地位。因此,也是你们的必学、必备技能之一。以前公众号也发过不少git相关的文章:css

Git这些高级用法,喜欢就拿去用!
一文速查Git经常使用命令,搞定版本控制照作就ok
大牛总结的Git使用技巧,写得太好了!
掌握这10条规范,轻松搞定Git!git

可是呢,民工哥,也常常在后台看到读者说,命令太多了很差记啊,时间长了不用又忘记了等等的吐槽。是啊,要学一门技术真难,况且如今技术更新、迭代这么快.....运维

因此,对于学习Git这门技术,要是有一个一看就懂,一学就会的入门资料就行了。前不久,国外的一位小姐姐写了一篇这样的文章《CS Visualized: Useful Git Commands》。做者是来自英属哥伦比亚的小姐姐 Lydia Hallie,在这篇文章里面,她经过生动形象的动画,以更加直观的方式,向开发者展现 Git 命令中的 merge、rebase、reset、revert、cherry-pick 等经常使用骚操做的具体原理。学习

下面就给你们带来一些实例分享:测试

一、git merge fetch

fast-forward模式动画

640.gif

no-fast-forward模式spa

640 (1).gif

合并冲突修复的过程 ,动画演示以下:翻译

640 (2).gif

二、git rebase 3d

git rebase 指令会复制当前分支的全部最新提交,而后将这些提交添加到指定分支提交记录之上。

640 (4).gif

git rebase还提供了 6 种操做模式:

  • reword:修改提交信息
  • edit:修改此提交
  • squash:将当前提交合并到以前的提交中
  • fixup:将当前提交合并到以前的提交中,不保留提交日志消息
  • exec:在每个须要变基的提交上执行一条命令
  • drop:删除提交

以 drop 为例:
640 (5).gif

以 squash 为例:

640 (7).gif

三、git reset

如下图为例:9e78i 提交添加了 style.css 文件,035cc 提交添加了 index.js 文件。使用软重置,咱们能够撤销提交记录,可是保留新建的 style.css 和 index.js 文件。

640 (6).gif

Hard reset硬重置

硬重置时:无需保留提交已有的修改,直接将当前分支的状态恢复到某个特定提交下。须要注意的是,硬重置还会将当前工做目录(working directory)中的文件、已暂存文件(staged files)所有移除!以下图所示:

640 (8).gif

四、git revert

举个例子,咱们在 ec5be 上添加了 index.js 文件。以后发现并不须要这个文件。那么就可使用 git revert ec5be 指令还原以前的更改。以下图所示:
640 (9).gif

五、git cherry-pick

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

640 (10).gif

六、git fetch

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

640 (11).gif
七、git pull

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

以下图所示:

640 (12).gif
八、git reflog

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

640 (13).gif

若是,你不想合并 origin/master 分支了。就须要执行 git reflog 命令,合并以前的仓库状态位于 HEAD@{1} 这个地方,因此咱们使用 git reset 指令将 HEAD 头指向 HEAD@{1}就能够了。
640 (14).gif

以上就是民工哥今天给你们带来的分享,若是本文对你有所帮助,请点个在看与转发分享支持一下,感谢你们。咱们一块儿学习,共同进步!!!

原做者:莉迪亚·哈莉(Lydia Hallie)
原文:https://dev.to/lydiahallie/cs...
民工哥经过翻译做者原文再加上一些我的理解总结而成,版权归原做者全部,纯属技术分享,不做为商业目的。