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 // 只查看将被删除的稳健列表,不真正删除。