git撤销命令

使用git之前,首先要搞清楚下面几个概念:

  • 工作区(本地项目,不包含.git目录)
  • 本地仓库(版本库,.git目录)
  • 暂存区(index)
  • 远程仓库
常用撤销命令:
  • 撤销修改:类似于使用vs code中的 放弃更改
git checkout fileName    // 撤销某一文件修改
git checkout .   // 撤销所有文件修改
  • 撤销add:类似于使用vs code中的 取消暂存更改
git reset HEAD fileName   // 撤销add操作的某个文件
git reset HEAD .    // 撤销本地所有add操作
  • 撤销commit:
git add fileName
git commit --ament -m “说明” 
// 修改commit后的文件,再 git commit--ament -m “xxx”  提交,用于文件commit后仍想修改说明,但不产生新的commit的情况
git reset --hard HEAD^
// 回退到上一个commit后的版本,前提是没有推送到远程库

HEAD表示当前版本
HEAD^表示上一个版本
HEAD^^表示上上一个版本
以此类推……
HEAD~10表示回退到上10个版本

git reset [--hard|soft|mixed|merge|keep] 版本号
// 根据commit版本号回退到某一提交版本

mixed:不删除工作空间改动代码,撤销commit和add(默认)
soft:不删除工作空间改动代码,撤销commit,不撤销add
hard:删除工作空间改动代码,撤销commit,撤销git add

git revert -n 目标版本号
// 撤销目标版本号所做的修改,但不改变该版本之后提交的版本
  • 回滚push:
// 先在本地回退到相应的版本
git reset --hard commitId   // 回退到指定版本
// 再强制推到远程库
git push origin <分支名> --force
// 此时,远程库也就回到了相应的版本
// 危害:可能会覆盖远程库中别人的代码!!!
// revert反做:撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程
git revert -n 版本号
// 然后对需要提交的内容重新add、commit、push推到远程库

:reset是撤销到某次提交,revert是重做某次提交

个人认为下面的图描述的比较清晰(侵删)


命令及概念关系

你可能感兴趣的:(git撤销命令)