外观
撤销
checkout 检出
checkout 用于创建、切换分支,或恢复工作区文件。
注意,checkout 会重写工作区,这个命令还是有危险性的。
reset 重置
reset 操作,要慎重,用于版本回滚,再恢复,但也要慎重使用。
revert 撤销
revert 主要用在主分支上,保留信息。在工作分支上,可以采用 reset 。
# 列出暂存区可以被检出的文件
$ git checkout
# 恢复暂存区的指定文件到工作区
$ git checkout [file]
# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]
# 恢复暂存区的所有文件到工作区
$ git checkout .
# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]
# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard
# 显示 commit 的信息,只要HEAD发生变化,就可以在这里看到
$ git reflog
# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]
# 重置当前 HEAD 为指定 commit,但保持暂存区和工作区不变
$ git reset --soft commit
# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]
# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]
# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]
# 暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop