Mic*_*oet 22 git atlassian-sourcetree
我意外地将功能分支推送到远程主站.现在我想将master恢复为之前的提交.当我选择"将当前分支恢复到此提交"时,仅恢复本地分支,并且因为远程主机是55(意外推送),所以我无法将刚恢复的本地主机推送到远程.
在SO和Google上查看这个问题时,我发现许多人使用命令行强制推送.但是因为我正在使用Source Tree,所以我想提出一种实际使用Source Tree的方法.
我也找到了rebase选项,但我似乎无法找到一步一步的教程..
有任何想法吗?
Jes*_*era 21
当你推送一个提交时,恢复它的最安全的方法(而不是用-f强制推送)是使用该revert函数,因此在你之前的提交之上创建一个新的提交.
这可以使用Sourcetree,右键单击要还原的提交,然后选择"反向提交...".
您需要以相反的顺序为要恢复的每个提交执行此操作.
执行此操作的最佳方法是使用Reset <branch> to this commit下图所示的选项。
将显示一个弹出窗口,让您选择您想要选择的代码重置模式。[见下文]

注意: 这并不完全是代码反转,但它完全从本地删除了您的提交并使其看起来更干净。
Sourcetree 不会-f向您公开该标志:https://answers.atlassian.com/questions/54469/how-do-i-perform-a-forced-push-push-f-from-sourcetree
因此,将遥控器恢复到原始状态的唯一方法是以git revert相反的顺序引入的每个提交。
假设远程正在提交A并且您推送了持有提交的功能分支B,C并且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
| 归档时间: |
|
| 查看次数: |
28843 次 |
| 最近记录: |