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

    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 <commit_hash> (恢复对应哈希值的提交)

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

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

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

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

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

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

 

END~~~

 

在进行代码开发时,通常是先在本地进行代码编写和测试,然后将代码提交到版本控制系统中。如果您的项目同时使用了 Git 仓库和服务器仓库,那么您需要进行以下步骤来将代码同时提交到这两个仓库中: 1. 在本地 Git 仓库中进行提交:使用 Git 命令将本地代码提交Git 仓库中,并将代码推送到远程 Git 服务器上。例如,使用以下命令进行提交和推送: ``` git add . git commit -m "提交信息" git push origin master ``` 其中,`git add .` 命令用于将所有修改过的文件添加到 Git 缓存中,`git commit -m "提交信息"` 命令用于提交代码并添加提交信息,`git push origin master` 命令用于将代码推送到名为 `origin` 的远程 Git 服务器的 `master` 分支上。 2. 在本地服务器仓库中进行提交:将本地代码复制到服务器仓库所在的目录中,并使用服务器上的版本控制系统进行提交。例如,如果您的服务器使用的是 SVN 版本控制系统,可以使用以下命令进行提交: ``` svn add . svn commit -m "提交信息" ``` 其中,`svn add .` 命令用于将所有新增的文件添加到 SVN 版本控制系统中,`svn commit -m "提交信息"` 命令用于提交代码并添加提交信息。 需要注意的是,如果您同时使用了 Git 和服务器仓库,那么需要确保两个仓库中的代码是同步的,否则可能会导致代码冲突或者版本混乱的问题。建议您在提交代码之前,先将服务器上的代码进行更新并检查是否存在冲突或版本不一致的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值