使用sourcetree将推送恢复为远程

Mic*_*oet 22 git atlassian-sourcetree

我意外地将功能分支推送到远程主站.现在我想将master恢复为之前的提交.当我选择"将当前分支恢复到此提交"时,仅恢复本地分支,并且因为远程主机是55(意外推送),所以我无法将刚恢复的本地主机推送到远程.

在SO和Google上查看这个问题时,我发现许多人使用命令行强制推送.但是因为我正在使用Source Tree,所以我想提出一种实际使用Source Tree的方法.

我也找到了rebase选项,但我似乎无法找到一步一步的教程..

有任何想法吗?

Jes*_*era 21

当你推送一个提交时,恢复它的最安全的方法(而不是用-f强制推送)是使用该revert函数,因此在你之前的提交之上创建一个新的提交.

这可以使用Sourcetree,右键单击要还原的提交,然后选择"反向提交...".

在此输入图像描述

您需要以相反的顺序为要恢复的每个提交执行此操作.


Lea*_*Way 5

执行此操作的最佳方法是使用Reset <branch> to this commit下图所示的选项。

重置为之前的提交

将显示一个弹出窗口,让您选择您想要选择的代码重置模式。[见下文] 选择重置模式

注意: 这并不完全是代码反转,但它完全从本地删除了您的提交并使其看起来更干净。

  • 这仅影响本地分支。如果您已经推送了提交,这只会删除本地存储库中的数据 - 但远程存储库将包含所有更改。 (10认同)

eck*_*kes 1

Sourcetree 不会-f向您公开该标志:https://answers.atlassian.com/questions/54469/how-do-i-perform-a-forced-push-push-f-from-sourcetree

因此,将遥控器恢复到原始状态的唯一方法是以git revert相反的顺序引入的每个提交。

假设远程正在提交A并且您推送了持有提交的功能分支BC并且D您必须

git revert D
git revert C
git revert B
git push
Run Code Online (Sandbox Code Playgroud)

推送将正常工作,因为您没有修改推送的历史记录,而是推送一组新的更改。

如果您想将一系列恢复缩短为一次提交,您可以执行以下操作

git rebase -i origin/master
Run Code Online (Sandbox Code Playgroud)

并将您的每个revert提交选择为squashed. 然后,您的将仅包含一次可恢复的push提交。DCB