Git 如何签出旧提交并将其推送到当前分支?
我的分支上有一些不正确的Git 如何签出旧提交并将其推送到当前分支?,git,gitlab,Git,Gitlab,我的分支上有一些不正确的提交/推送,然后我想恢复到旧的正确的提交并推送到当前分支 我有一个问题: git log new: xxxxxxx ... old: ac758a3 git checkout ac758a3 git commit -m 'revert to old branch (ac758a3) to push it on current branch' 输出: [编辑] 示意图: A(我想要的正确提交)---B(不正确的提交)---C(不正确的提交)
提交/推送
,然后我想恢复到旧的正确的提交并推送到当前分支
我有一个问题:
git log
new: xxxxxxx
...
old: ac758a3
git checkout ac758a3
git commit -m 'revert to old branch (ac758a3) to push it on current branch'
输出:
[编辑] 示意图:
- A(我想要的正确提交)---B(不正确的提交)---C(不正确的提交) 提交)
- A--B--C--A
提前谢谢。
git reset--hard
是你亲爱的朋友
遵循以下步骤:
git log
git reset--hard
git推送原点-f
git reset--hard
是您亲爱的朋友
遵循以下步骤:
git log
git reset--hard
git推送原点-f
注意:您将无法正常推送它,您必须强制推送它,因为我们已经更改了该分支的历史记录,并且与remote不同步。如果您已经推送了提交,而人们已经拉送了提交,最好的解决方案是添加一个新的提交,有效地撤消以前的提交。那么一切都正常了 您可以使用git revert撤消一系列提交
%git revert --no-edit SHA1..SHA2
这将按相反顺序应用修补程序并撤消更改。有关更多信息,请参阅git revert文档。如果您已经推送了提交,并且人们已经拉送了提交,那么最好的解决方案是添加一个新的提交,它可以有效地撤消以前的提交。那么一切都正常了 您可以使用git revert撤消一系列提交
%git revert --no-edit SHA1..SHA2
这将按相反顺序应用修补程序并撤消更改。有关更多信息,请参阅git revert文档。这将起作用,但将删除旧提交到当前提交的所有提交。它还将更改分支的历史记录,以便其他已拉入分支的人将遇到合并冲突,并将再次向您发回代码。这将起作用,但将删除从旧提交到当前提交的所有提交。它还将改变分支的历史记录,以便其他已经拉它的人将遇到合并冲突,并将再次将代码发送回您。请确切解释最终结果应该是什么样子。是否要删除提交?是否要还原它们?“你想假装它们从未发生过,但把它们留在里面吗?”拉塞夫·格斯·瑟卡尔森我把这个问题编辑成示意图。有不止一种方法。另请参见和(请使用
git read tree
注意答案)。@torek我的问题不是这些,我对回滚或恢复到旧提交没有任何问题。我的问题是,在恢复到旧提交后,我应该如何将其推送到当前分支上,而不是最后一次提交。这两个方面都向您展示了如何进行恢复,然后,git push
完成了恢复。请确切解释最终结果应该是什么样子。是否要删除提交?是否要还原它们?“你想假装它们从未发生过,但把它们留在里面吗?”拉塞夫·格斯·瑟卡尔森我把这个问题编辑成示意图。有不止一种方法。另请参见和(请使用git read tree
注意答案)。@torek我的问题不是这些,我对回滚或恢复到旧提交没有任何问题。我的问题是,在恢复到旧提交之后,我应该如何将其推送到当前分支上,而不是最后一次提交。这两个方面都向您展示了如何进行恢复,然后,git push
就完成了。