图解Git常用指令

虽然说在此之前经常使用git进行版本控制,但是说到底用的都是 add、commit、pull、push 一套命令,外加github 或 gitee 的历史提交记录进行工作。

但实际上 git 还有一些实用的命令,这不快要工作了嘛,赶紧学习总结下,免得同事们说我不专业。

接下来的内容可以是一副连环画,每输入一个命令后 git 提交记录就会发生改变。

(绘图工具 drawio 与 PPT)

最初状态

我们约定一下,最初只有一条提交记录的状态,如图:
本地仓库最初状态

git commit

新建1次提交
git commit

git branch Tom

git学习.png

git checkout Tom

git学习.png

master和Tom各自提交一次

git学习.png

git merge Tom

git学习.png

git checkout Tom; git merge master

git学习.png

git rebase Tom

我们回到master 和 Tom分支合并前的状态,并执行上述指令
git学习.png

git checkout Tom; git rebase master

master继承自Tom,故只需移动Tom指针
git学习.png

git checkout C3

此处假设 C0,C1,C2,C3,C4,C5均是提交记录的哈希值
git学习.png

git branch -f master HEAD^

^是HEAD指针上一个提交记录
~n是HEAD指针上n个提交记录
^n是HEAD指针的第n个双亲节点
git学习.png

从HEAD分离回到正常状态–git checkout Tom

git学习.png

撤销提交之git reset HEAD^

git学习.png

撤销变更之 git revert HEAD^

C2和C2’'内容保持一致
git学习.png

整理提交记录 git cherry-pick

依次执行以下指令,将所有提交按顺序放入master分支中
git checkout master;
git cherry-pick C2 C3 C4
此处依旧约定C1 C2 C3 C4为提交记录的哈希值
git学习.png

git tag

我们再像看连环画一样地快速看一眼上述的配图,是不是发现了什么?虽然分支可以移来移去的,但是提交记录的位置是不会变动的,我们可以使用git tag对这些提交记录打标签
执行 git tag version-2.0 HEAD~2
git学习.png

git tag的意义?

tag是commit id的一个引用,因此 可以使用 git checkout version-2.0 替代冗长的 git checkout 0x12hg13cgh213v321
git学习.png

题外话

分离出HEAD指针是非常危险的,在分离头指针的状态下,一般正经的终端都会给出明显的提示,如果在回到master(其它分支一样)前没有对提交进行合并或者打tag,那么之前的修改提交基本都会丢失。
执行 git commit
git学习.png
执行 git checkout master
git学习.png

如果你真的学会了我之前所讲的内容,你会很容易的发现哈希值为C5的提交记录已经是一个孤立的节点了(中间的C3也是),是无法被追踪到的,因此这次修改提交是徒劳的。
警惕以下情况!!!
git checkout C4
(此处仍约定C4为该次提交记录的哈希值)
git学习.png

可以看看这位小哥遇到过的坑 传送门点我

本文完

https://git-scm.com/book/en/v2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值