git版本回退的一个问题

这篇博客讲述了如何在本地安全地修改远程仓库中已提交的历史代码。首先,通过clone远程最新代码到本地并创建dev分支。接着,记录需要回退的commit ID。使用git reset --hard回退到特定提交,修改文件并提交。再用cherry-pick反向应用后续提交。最后,使用git push -f更新远程分支。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    有时候我们想在本地修改远程已经提交的某个历史,如果我们在本地修改之后,然后push会有问题,比如说我们先看一下现在的状态:   

$ git status
On branch dev
Your branch is behind 'origin/dev' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)
    但是我们将改动的版本推送到服务器上的时候,会报错如下:

$ git push origin dev
root@192.168.1.180's password:
To ssh://root@192.168.1.180:/home/test_web.git
 ! [rejected]        dev -> dev (non-fast-forward)
error: failed to push some refs to 'ssh://root@192.168.1.180:/home/test_web.git'
hint: Updates were rejected because the tip of your current branch is behin
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    这里的主要原因就是因为已经push到远程的提交是不能回退提交的,也就是我们不能单独抽出某个提交进行修改,但是此时我们可以使用git  push  -f 来执行。

   我们可以操作如下:

   (1)先将远程服务器上最新的代码clone到本地,并建立dev分支。

   (2)把返回历史的提交以及之后所有提交的commit  ID的顺序都记录下来。

   (3)然后我们回退到某个点,也就是git  reset  SHA   --hard

   (4)进行文件修改并且对返回的提交进行修改:modify,git  add,git  commit  

   (5)用之前记录下来的commit  ID反向cherry  pick,目标提交后有多少提交都需要使用到。

   (6)对当前分支进行push,替换到服务器上的远程分支,需要加-f参数。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值