kingBook

导航

git reset

git reset [--soft | --mixed | --hard] [HEAD]
--mixed 重置 HEAD 和索引 (默认,可以不用带该参数)
--soft 仅重置 HEAD
--hard 重置 HEAD, 索引和工作区(注意:使用--hard时,请确保工作区已提交或备份,否则会销毁工作区数据无法恢复)

$ git reset –hard HEAD~1  # 回退上一个版本  
$ git reset –hard bae128  # 回退到某个版本回退点之前的所有信息。 
$ git reset --hard origin/master # 将本地的状态回退到和远程的一样 

HEAD 说明:

  • HEAD 表示当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • HEAD^^^ 上上上一个版本
  • 以此类推...

可以使用 ~数字表示

  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD~2 上上一个版本
  • HEAD~3 上上上一个版本
  • 以此类推...

取消暂存某个文件:

git reset HEAD~1 e/e.txt # 执行后可以使用 git status 查看,git add -A 再次添加到暂存

压缩提交历史:

$ git log --oneline
f95d7bd (HEAD -> master) e.txt v3
3b36804 e.txt v2
7696faf e.txt v1
7367670 create e.txt
...
$ git reset --soft 7367670
$ git log --oneline
7367670 (HEAD -> master) create e.txt
...
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   e/e.txt
$ git commit -m "e.txt v1,v2,v3"
[master 52b6c18] e.txt v1,v2,v3
 1 file changed, 1 insertion(+)
$ git log --oneline
52b6c18 (HEAD -> master) e.txt v1,v2,v3
...

更多参考:
Git-工具-重置揭密
git reset 命令

posted on 2018-04-27 09:53  kingBook  阅读(223)  评论(0编辑  收藏  举报