现在公司一般都是用tortorse git 管理代码,作为一种工具,虽然不必深究,但我始终认为能够熟练使用好一款工具,可以节约很多时间,下面是我在工作中经常使用的几个操作,与大家分享,不足之处,还请指正
1.cherry-pick
一个软件的开发周期可能会有多个分支,主分支master,版本发布分支release,有时候我们的代码可能同时要上这两个分支,假设现在我们的代码已经上到master分支了,那如何再上到release分支呢,这个时候就可以用cherry-pick功能
假设当前的分支为master,而且你已经提交的代码在另外一个分支上(假设为branch_test),首先进入show log界面,然后点击左上角切换到branch_test上,查看branch_test的commit log,然后cherry-pick 这个commit,之后你的当前master分支就会有这个提交了,下一步就是推送到远端,提MR了

2、reset 功能
这一个也是比较常用的功能,因为工作中对每次提交的记录有格式要求,多一个空格都不允许,但总有不小心手抖了多打了一个空格的情况,怎么办呢,我通常的做法是reset掉(类型选择mixed),然后重新提交(可能还有其他更方便的方法,待挖掘),如果你想把你的提交A reset掉,那么需要选中A的前一次提交,右键选择reset

reset有三种类型(resetType)
第一种soft:(没有使用过,待补充)
第二种 mixed:这种类型会保留代码的修改,并且修改处于未提交状态
第三种hard :这种不会保留对于代码的修改
3. force push
在第二条中说到过,如果commit记录格式有误(假设为commitA),我会reset掉,然后重新commit(假设为commitB),再push到远端库上去,可是如果之前push一次了,重新push你会发现push不上去,会报错,原因就是此时远端的分支和本地的分支已经不匹配了,远端的分支有commitA,而本地分支没有commitA,所以push不上去,这个时候就可以使用强推,force push。我一般会右键选择git sync,然后选择force push
4. git fetch&rebase
如何同步远端库的分支?可能很多人会选择pull, 而且同步界面里默认也是pull,可是我一般会选择,这里就涉及到git rebase和git merge的区别了,因为git pull相当于git fetch & merge,merge是合并两个分支,rebase是变基,改变基线,我们实际上想要的操作是更新我们的代码,和远端分支库上的代码一样,在此基础上,将我们之前的提交(如果有提交的话,而且一般情况下都会有提交)在已经更新到最新的分支上重新提交,其实这就是变基,然后再进行接下来的push,提merge request
5.stash changes
实际工作中我们经常会遇到这种情况,代码写到一半又要去处理其他问题,然后我们必须切换分支,可是代码写到一半,还没写完,怎么办,两种方法:
(1)先commit,然后切换到其他分支,问题处理完了,再切回来,然后将刚才的commit reset掉(resetType 选择mixed)
(2)stash changes,然后切换分支,问题处理完后,再切回来,然后在stash pop—相当于将原来的修改先存放起来,用的时候再取出来
来源:CSDN
作者:heshuihappy
链接:https://blog.csdn.net/heshuihappy/article/details/103431187