git reset中有三个命令(--hard、--soft与--mixed);主要用于工作区、暂存区、本地仓库三个区域的文件提交撤回。
在将文件提交至远程端时,文件的提交需要经过git add
、git commit
及git push
三个过程才能提交至git远程仓库。我们平时修改文件在工作目录中,提交时先使用git add
提交至暂存区,再通过git commit
提交至本地仓库,最后才能使用git push
提交至GitHub。git reset的三个命令就是用于本地的文件区域撤回。
git reset --soft xxx(commit操作的哈希ID)
git reset --soft xxx
用于将文件提交至本地仓库后撤回暂存区的操作。
-
我们先创建几个文件,并将其中的部分添加至本地仓库
- 在这里可以使用
git log
来查看commit的操作行为哈希ID - 使用
git reset --sofet xxx
后使用git status
查看暂存区文件111.md 222.md已回
git reset --mixed xxx 用于将本地仓库文件撤回至工作区,具体操作参照git reset --soft
git reset --hard xxx 会将工作区、暂存区、本地仓库的所有提交的文件全都撤销(包括工作区文件,会删除)
下面我们来验证一下
- 我们将文件 111.md,222.md,333.md 添加至暂存区并重复之前的
git commit
添加操作
-使用git reset --hard
后可以看到在暂存区与工作区都没有了之前添加的文件
而且回收站也没有哦!
git reset
是git中一个比较重要的命令,不过git reset --hard
慎用哦!
git revert是一种反做命令,比如你commit提交了一个文件,如果用上的话就相当于是撤回了这个文件,但是他有一个不同的就是可以跨过已提交的版本
-
我们在这里创建 111.md 222.md 333.md 几个文件并各自单独添加并提交
- 提交完成后我们
git revert xxx
提交 111.md 的版本 -
提交之后可以通过push到git上来验证是否成功
- 可看到 111.md 是未提交至GitHub上的,这也证实了之前提交的 111.md 文件被反提交,而 222.md 与 333.md 的提交并未受影响。