(六)小技能

一、git reset

当文件版本冲突太多时候,rebase就不太好使了, 没个edit都要fix conflict。那么可以通过reset 来解决。
git reset commitid

(六)小技能_第1张图片
图1.1
(六)小技能_第2张图片
图1.2

reset到版本B,这时候工作区的修改就是CD的修改内容了,那么冲洗作为一次提交,CD提交就会被干掉,如图1.3所示,直接把E强推到远端即可。

(六)小技能_第3张图片
图1.4

二、git commit --amend

前一秒提交了msg,后1s发现提交msg感觉描述不太好想改怎么办?好办,有2种办法。

  1. reset HEAD^,重新提交。
  2. git commit --amend修改提交内容即可。

三、git rebase

有多个记录想要修改怎么办?
好办,git rebase -i commitid
将指针移动到某个版本,将这个版本之后的提交全部重新提交一遍。

(六)小技能_第4张图片
图1.5

如图1.5所示,我要修改435781d的内容,那么我就需要rebase到435781d的上一个版本92212dd。

(六)小技能_第5张图片
图1.6

如图1.6所示,会将要修改提交消息的版本以及该版本之后的版本 由上到下都列出来。
看注释中的几个关键字的含义:
p:当版本指针知指到使用e标记的版本这里,使用该提交,即直接把这个版本的提交作为新的提交,然后继续执行下一个版本。
e: ,当版本指针知指到使用e标记的版本这里则停下来,使用该提交,用户可以输入git commit --amend 来修改提交记录,然后git rebase --continue 继续下一次提交。
r:当版本指针知指到使用e标记的版本这里,使用该提交,但是会停下来给出的是vim编辑提交msg界面,修改msg后继续下一个提交。

s: 压缩,当前指针指向的的提交压缩到上一个次提交内,如将第二行换pick换成s,则ca55e2c提交会和435718d合并到一起。注意:这个会保留ca55e2c的提交记录,保留提交记录如图1.7所示。

(六)小技能_第6张图片
图1.7

f: 和s一样,只是不保留提交msg。

四、git stash

当我们修改一些文件之后,没有完成一个功能的开发,这时候保存一次提交又不合适,所以需要暂存。

  1. git stash
    将修改加入到暂存栈中。

  2. git stash list
    暂存的修改可以通过git stash list列出来。如图1.8所示。


    图1.8 暂存列表
  3. git stash pop
    将暂存栈的第一个修改弹出,并应用到工作区。

  4. git stash apply stash@{index}
    应用暂存栈的某个修改。

你可能感兴趣的:((六)小技能)