git reset与git revert

git reset中有三个命令(–hard、–soft与–mixed);主要用于工作区、暂存区、本地仓库三个区域的文件提交撤回。

在将文件提交至远程端时,文件的提交需要经过git addgit commitgit push三个过程才能提交至git远程仓库。我们平时修改文件在工作目录中,提交时先使用git add提交至暂存区,再通过git commit提交至本地仓库,最后才能使用git push提交至GitHub。git reset的三个命令就是用于本地的文件区域撤回。

git reset --soft xxx(commit操作的哈希ID)

git reset --soft xxx 用于将文件提交至本地仓库后撤回暂存区的操作。

  • 我们先创建几个文件,并将其中的部分添加至本地仓库git reset与git revert
  • 在这里可以使用git log来查看commit的操作行为哈希IDgit reset与git revert
  • 使用git reset --sofet xxx后使用git status查看暂存区文件111.md 222.md已回git reset与git revert

git reset --mixed xxx 用于将本地仓库文件撤回至工作区,具体操作参照git reset --soft

git reset --hard xxx 会将工作区、暂存区、本地仓库的所有提交的文件全都撤销(包括工作区文件,会删除)

下面我们来验证一下

  • 我们将文件 111.md,222.md,333.md 添加至暂存区并重复之前的git commit添加操作git reset与git revert
    -使用git reset --hard后可以看到在暂存区与工作区都没有了之前添加的文件git reset与git revert
    而且回收站也没有哦!

git reset是git中一个比较重要的命令,不过git reset --hard慎用哦!

git revert是一种反做命令,比如你commit提交了一个文件,如果用上的话就相当于是撤回了这个文件,但是他有一个不同的就是可以跨过已提交的版本

  • 我们在这里创建 111.md 222.md 333.md 几个文件并各自单独添加并提交git reset与git revert
  • 提交完成后我们git revert xxx提交 111.md 的版本git reset与git revert
  • 提交之后可以通过push到git上来验证是否成功git reset与git revert
  • 可看到 111.md 是未提交至GitHub上的,这也证实了之前提交的 111.md 文件被反提交,而 222.md333.md 的提交并未受影响。