如何签出旧提交并将其推送到当前分支?

Ben*_*ari 1 git gitlab

我的分支上有一些错误 commit/push,然后我想恢复到旧的正确提交并将其推送到当前分支上

我有以下问题:

git log
    new: xxxxxxx
    ...
    old: ac758a3

git checkout ac758a3
git commit -m 'revert to old branch (ac758a3) to push it on current branch'
Run Code Online (Sandbox Code Playgroud)

出去:

HEAD detached at ac758a3
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

[编辑]

示意图:

  • A(我想要的正确提交)--- B(错误提交)--- C(错误提交)

所以我想有以下流程:

  • A --- B --- C --- A

我想恢复到 A(旧提交)并将其推送到当前分支(同一分支)。

什么是快速解决方案?


提前致谢。

bei*_*ish 6

git reset --hard <commit-id> 是你亲爱的朋友吗?

请按照以下步骤操作:

  1. 在您当前的分支运行命令上: git log
  2. 从要返回的日志中复制正确的提交 ID。
  3. 运行命令: git reset --hard <commit-id-copied-in-step-2 above>
  4. 将您的分支推送到远程:git push origin <my-feature-branch> -f

注意:您将无法正常推送,必须强行推送,因为我们更改了该分支的历史记录并且与远程不同步。

  • 这将起作用,但会将所有提交从旧提交删除到当前提交。它还将更改分支的历史记录,因此已经拉取它的其他人将遇到合并冲突,并将再次将代码发回给您。 (3认同)