Reset

Reset

reset 用于在仓库的历史版本中穿梭。但是要明确的一点,reset与工作区和暂存区没有半毛钱关系。仅仅是更改了仓库中的记录点。

reset 有三种不同的模式:mixed(默认)、soft、hard

场景1 - 希望删除最近几次的commit记录 #

注意这个场景仅仅是我们对于最近几次的commit记录的删除,而这几次commit所修改的内容是不会撤销的,依然体现在文件中。只是仓库的记录里没有这些改动。这些改动将会随着你的下一次commit重新提交到仓库。

git reset commit_id

# 撤销最近一次的commit,修改记录回到工作区
git reset HEAD^

场景2 - 希望所有的一切回退到某个历史时刻 #

这就需要使用hard模式,可以将历史的commit记录连同文件的修改都扔掉,包括你的工作区、暂存区。一切都回到某个commit的时刻。 慎用

git reset --hard commit_id

场景3 - 希望撤销某个文件的commit #

某个文件被误修改了一个空格,并且被带入了commit,因此要单独撤销某个文件的commit,回到之前的状态。

git reset e32535157ac44 src/server/Processor.hpp

总结 #

通过上面的使用,我们可以发现,mixed就是将所有的变动都放入工作区,hard是将所有的变动删除,soft则是将commit的变动放入暂存区,工作区不动。

Git clean #

清除未被跟踪的文件。

git clean -n // 只查看将被删除的稳健列表,不真正删除。