git版本回退操作

本文 git 相关命令:

  • git reset:回退版本,可指定某一次提交的版本。git reset [--soft | --mixed | --hard] commitId。
  • git revert:撤销某个提交,做反向操作,生成新的commitId,原有提交记录保留。git revert commitId。
  • git status:查看文件在工作区和暂存区的状态。
  • git log:查看代码提交记录。
  • git cherry-pick:选择commitId 应用在当前分支。git cherry-pick commitId。

回退分两种情况:

  • 已 commit,未push到远程仓库。
  • 已 commit,并且push到了远程仓库。

一、已 commit,未push到远程仓库

1.1 git reset --soft(撤销commit)

touch 创建了一个a.text,并提交到了本地仓库。

此时回滚a.text,git log找到要回退到的版本号,此处版本号为前一个版本。(或者通过 git reset [HEAD] 回退版本)

执行命令:git reset --soft 7ee5305f1e1e0f66c7d69666ff7054fc6e309464 

通过idea可看到commit 记录被撤销了。 

1.2 git reset --mixed(撤销 commit 和 add 两个动作)

touch创建新文件 b.text, 并提交到本地仓库。

 

通过git log找到要回退到的版本号 7ee5305f1e1e0f66c7d69666ff7054fc6e309464

执行命令:git reset --mixed 7ee5305f1e1e0f66c7d69666ff7054fc6e309464

 

此时可以看到,git reset --mixed 撤销的文件 未加入到暂存区,所以是撤销 commit 和 add 两个动作。

二、已 commit,并且push到了远程仓库

2.1 git reset --hard(撤销并舍弃版本号之后的提交记录)

新建文件a.text,并push到远程

 执行命令:

  • git reset --hard 7ee5305f1e1e0f66c7d69666ff7054fc6e309464

  • git push -f(强制推送到远程,之前提交都会被覆盖,慎用)

 

此时可用看到提交记录和文件都被撤销了。使用需谨慎,不推荐使用。

当然,如果不小心用了git reset --hard 操作回退了,那么可用git reflog命令查看命令历史,找到被删除的commit,再次操作。

2.2 git revert(撤销,但是保留了提交记录)

新建文件a.text,并push到远程。

通过 git revert 版本号,撤销当前提交记录。版本号为要撤销的版本号,此处为当前提交的版本号。

可以看到本地和远程仓库文件都被撤销了。但是git log中能看到提交和撤销记录。

推荐用这种方式回退远程的代码。比如我们在master分支提交错了文件需要回退,那么我们用这个方式回退后,再用git cherry-pick commitId 重放该提交。最后本地修改了再push到远程。

三、总结

回退分两种情况:

1.已 commit,未push到远程仓库。

  1. git reset --soft(撤销commit)。
  2. git reset --mixed(撤销 commit 和 add 两个动作)。

2.已 commit,并且push到了远程仓库。

  1. git reset --hard(撤销并舍弃版本号之后的提交记录)。
  2. git revert(撤销,但是保留了提交记录)。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值