Git命令——撤销操作

Git用于撤销的操作主要有以下几个:

  1. $ git reset HEAD <file>...  # 撤销暂存的文件
  2. $ git reset --hard HEAD    # 撤销工作目录中所有未提交文件的修改内容
  3. $ git checkout -- <file>...   # 撤销指定未提交文件的修改内容
  4. git reset [--soft | --mixed | --hard]  [<commitID>]  # 回退代码至某次提交

 

1. 撤销暂存的文件

对于已经暂存的文件,可以 $ git reset HEAD <file>... 命令来取消暂存。例如,文件file2.md已暂存:

运行 $ git reset HEAD <file>... 命令后,当前文件的状态为:

 

2. 撤销工作目录中所有未提交文件的修改内容

不加选项地调用 git reset 命令并不危险,因为它只会修改暂存区域,并不会被修改工作目录内的文件。但是,如果在调用的时候在调用时加上 --hard 选项,会撤销工作目录中所有未提交文件的修改内容。例如,当前文件的状态为:

运行 $ git reset --hard HEAD 命令后文件的状态为:

 

3. 撤销指定未提交文件的修改内容

如果你并不想保留对某个文件的修改,需要将其将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)。可以使用 git checkout -- <file>... 命令,例如:

 

注意git checkout -- [file] 是一个危险的命令,你对那个文件做的任何修改都会消失,除非你确实清楚不想要那个文件的修改内容了,否则不要使用这个命令。

 

4. 回退代码至某次提交

 

 命令:$ git reset [--soft | --mixed | --hard]  [<commitID>]

  --soft:修改本地仓库里面的数据为commitID对应快照的数据,所有更改过的文件都将变为“待提交的修改”。

  --mixed:修改本地仓库和暂存区里面的数据为commitID对应快照里的数据,更改后的文件将被保留,但没有标记为提交(是git reset的默认操作)。

  --hard:修改本地仓库、暂存区和工作区里面的数据为commitID对应快照的内数据,从<commitID>开始对工作树中跟踪的文件所做的任何更改都将被丢弃。

 

 



 

posted @ 2019-09-01 00:14  shichangxing  阅读(1118)  评论(0编辑  收藏  举报