简单记录下,不写容易忘。
今天不小心在git add 的时候提交了几个本地文件,并且顺手commit 了, 但所幸还没有push。这种时候如果需要在本地重置到最近一个错误commit 之前,就需要用到 reset 命令。
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
git reset 基本有两个用法,一个常用的就是 git reset [files], 这个是用在git add 了不需要的文件,而要把这些文件reset 到working directory 里面的时候。比如:
git add src/
git reset src/temp/
这就把temp 文件夹下的文件从staged 重置到working dir 中。
git reset 的另外一种救命做法,以应对错误commit 的情况。比如要把刚才错误提交的 test additional files 这条 commit 重置到workspace, 那么应该给reset 命令传入红框所示commit 的前一个commitHash,并且用--soft 表示,需要保留所有的修改到暂存区,这样就可以进一步reset 错误提交的文件。
image.png
git reset --soft 12ddf14b6019a197dcce7781bd59ea31e93fb16c
注意 git reset --mixed 是默认选项,保留所有修改的文件,并且没有marked 为待commit 的文件,需要再次 add。 --hard 是丢弃本次所有修改,需要慎重使用。 另外,git reset 是用于还没有git push 的本地commit 。









网友评论