Git笔记:撤销本地提交 & 恢复远程仓库提交

目录

1. 撤销还没有推送到remote仓库的提交

1.1 完全撤销-舍弃你的全部改动,销毁提交

1.1.1 撤销提交后又想恢复刚刚销毁的提交

1.2 撤销-但保留你的改动

1.3 最安全轻微的撤销 

2. 撤销已经推送到remote仓库的提交

2.1 利用git revert来撤销远程提交


本篇文章主要记录 git reset 及 git revert 的使用方法。

1. 撤销还没有推送到remote仓库的提交

撤销最新的本地提交,如下图所示,C时master分支上最新的提交,现在我们要撤销master分支上的提交C。

   (F)
A-B-C
    ↑
  master

C是HEAD(HEAD: 代表这当前分支上最新的commit提交。), F是文件的状态.

1.1 完全撤销-舍弃你的全部改动,销毁提交

当你新加了一些改动,并且添加这些改动,然后commit提交到本地,这时你发现的你的改动完全做错了,你想撤销这个提交,而且不需要保留之前的改动。

git reset --hard HEAD~

执行完reset命令后,执行 git status 命令来查看你branch状态,你可以发现你刚刚的提交消失了,并且之前的change改动也消失了,效果如下图所示。

 (F)
A-B
  ↑
master

1.1.1 撤销提交后又想恢复刚刚销毁的提交

当你用git reset --hard HEAD~ 来撤销提交后,你销毁了你的提交,但假如这时你突然又想恢复刚刚销毁的提交,来看看之前做的改动。这时候你能恢复刚销毁的提交吗?答案是可以的!

恢复提交步骤:

    1. 执行git reflog命令来查看你刚刚销毁提交的记录及其哈希值。

git reflog

Git笔记:撤销本地提交 & 恢复远程仓库提交_第1张图片

    2. 找到相对应的哈希值,执行git checkout -b someNewBranchName shaYouDestroyed命令,如上图我执行的命令:

git co -b fix/recover-commit-remove-before 7144f51

    看,这时你恢复了这个提交,如上图所示,你可以在“fix/recover-commit-remove-before”分支上查看该提交。     

1.2 撤销-但保留你的改动

当你做了一些改动,并且添加这些改动,然后commit提交到本地,这时你发现的你的改动有点小问题,你想撤销这个commit提交,而且要保留之前的改动,方便在之前的改动基础上做一些新的改动。
撤销方法步骤为:

git reset HEAD~

执行完reset命令后,再执行 git status 来查看你之前的那些改动,你会发现你之前的哪些改动都还在,效果如下图所示:

   (F)
A-B-C
  ↑
master

1.3 最安全轻微的撤销 

保留文件的改动及索引状态,撤销完成后将会到git添加改动的状态,实现方法为:

git reset --soft HEAD~

实现效果如下图所示:撤销完成,回到git添加改动后的状态。

 

2. 撤销已经推送到remote仓库的提交

撤销已经推送到远程仓库的提交,

     (F)
A-B-C-D
      ↑
   master

D是HEAD(是我们最新的提交,现在我们要撤销D到C), F是文件的状态.

2.1 利用git revert来撤销远程提交

git revert HEAD   (恢复HEAD提交)
或者
git revert  (恢复对应哈希值的提交)

我们恢复分支上的状态到C,但是我有revert的提交记录,如下图所示:

       (F)
A-B-C-D-E
        ↑
      master

E是恢复D的提交改动,所以状态其实是跟C一样。

如果你不想有这个revert提交记录,这时你就需要整理你的branch提交了,具体操作步骤请看另外的博客:Git 笔记:将两个提交合并为一个

注意:撤销还原远程提交时需注意有没有人pull了你的提交,不然将引起额外的工作,亲测,哈哈!

reset 与 revert 操作还是挺重要的,多试几次,很快就能熟能生巧。

 

END~~~

 

你可能感兴趣的:(Git笔记,git,undo,commit,git撤销提交,git,reset,git,revert,git,撤销远程仓库的提交)