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

时间:2018-05-22 06:45:05

标签: git gitlab

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

我遇到了问题:

git log
    new: xxxxxxx
    ...
    old: ac758a3

git checkout ac758a3
git commit -m 'revert to old branch (ac758a3) for push it on current branch'

输出:

HEAD detached at ac758a3
nothing to commit, working directory clean

[编辑]

如图所示:

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

所以我想要以下流程:

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

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

什么是快速解决方案?

提前致谢。

2 个答案:

答案 0 :(得分:2)

亲爱的,

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
  5. 注意:您将无法正常推送它,因为我们更改了该分支的历史记录并且与远程设备不同步,所以您必须强行推送它。

答案 1 :(得分:0)

如果您已经推送了提交并且人们已经提取了它,那么最好的解决方案是添加一个有效撤消先前提交的新提交。事情很正常。

你可以使用git revert撤消一系列提交

%git revert --no-edit  SHA1..SHA2

这将以相反的顺序应用补丁并撤消更改。有关更多信息,请参阅git revert文档。