git使用高级教程

摘自微信公众号:https://mp.weixin.qq.com/s?__biz=MzU1NTg0MzMwMg==&mid=2247483712&idx=1&sn=c89aeac2620dadc1829cd4d4f1038f2a&chksm=fbcf6ac9ccb8e3df929d5631e98923c5a0be6a94889f0b58f2e87e07f42791c42da54552767d&scene=27&ascene=0&devicetype=android-26&version=2700033a&nettype=3gnet&abtest_cookie=BAABAAoACwASABMABAAjlx4AV5keAM6ZHgDZmR4AAAA%3D&lang=zh_CN&pass_ticket=9lOSHFEPi%2FBfnwQrxYqpqLtiULQjuTaK8IThDnW8CiLuaev%2F8mlbsLQoAcYyi4QD&wx_header=1

 

上2篇说了,git基本的和常用的操作,这一篇来讲一下git的高级操作

 

高级操作就是出现特殊情况的时候,才会用到的指令,所以要慎用,如果用错了,问题也很大

 

特殊情况1

我们发布的版本上线以后,出现问题,想立马回滚到发布之前的版本。

 

git reset <想要回到的commitId>

        = git reset --soft <想要回到的commitId> 

(--soft是默认的,加不加是一样的)

这个指令是把版本回退到指定的commitId

git log

查看提交的commitId,git log显示不完,光标显示在冒号的位置,按方向键上下翻,按q会退出

git使用高级教程

我们回退到指定id的版本,这个时候,回退的代码会被放到工作区间

git使用高级教程

有是变成红色的代码,git reset回退版本时,回退的代码是保留下来的,被放到工作区间,git reset --hard就是把回退的代码直接删除掉,不会保留下来,这个指令很危险,一般不用。

 

git push -f 

把刚才reset以后的版本推到远程,也覆盖掉远程仓库的最新的2个提交,回退远程的版本, -f参数强制覆盖远程,这样就可以把线上的版本给回退了

 

 

git stash

把git的的未提交的代码,工作区间和暂存区中的代码,保存到Git的栈中,意思就是把我没写好的代码先放到一边,待会再用,因为你代码没提交,切分支是比较危险的,甚至不能切换分支的

git使用高级教程

他叫你先提交修改,但是我们没写好,不能提交,就可以使用git stash,把代码先放到一边,过会再使用,怎么查看保存到哪里了呢,怎么拿出来呢

git使用高级教程

git stash save '注释'

可以给stash加注释,清除存储的是什么代码

git stash pop [email protected]{0}

挑选任何指定stash弹出,而不是弹出最新的

git stash drop 

删除最新的stash

 

 

git cherry-pick 

挑选指定的commitid来合并

git merge 会把分支上的新提交都会合并到master主分支上,但是有的时候我们并不想合并所有的新提交,而是挑选几个commitid合并

git使用高级教程

git使用高级教程

我们现在只想把test2和test4的提交合并到master上

 

git cherry-pick 

git使用高级教程

git使用高级教程

 

好,今天的高级教程就讲到这里,git的教程基本就讲完了,还有一些生僻 的指令,如果自己有需要,可以自己学习

 

摘自微信公众号

git使用高级教程