如何重新定位到较早的远程提交?
How to rebase on to an earlier remote commit?
我有一个本地提交 A
并且我使用了 git pull --rebase origin master
,所以现在 A
堆叠在最新的远程主提交之上,但我意识到我没有想要那样做,并且需要实际重新定位到 master 的早期愿景。
我发现提交哈希 earlier_commit_hash
与较早的提交相关联并做了 git pull --rebase origin earlier_commit_hash
,但似乎没有任何改变(我的本地分支仍然包含 [= 之后的所有远程主提交) 13=]).
完成我需要的正确方法是什么?
来自 master 的较新提交已经是您本地历史的一部分,这就是为什么当您对较旧的提交使用 rebase
时它们将被继承。请注意,它们可能仍会被新的哈希重写,这会使情况变得更糟。
您可以试试 rebase --onto
。来自联机帮助页:
A range of commits could also be removed with rebase. If we have the following situation:
E---F---G---H---I---J topicA
then the command
git rebase --onto topicA~5 topicA~3 topicA
would result in the removal of commits F and G:
E---H'---I'---J' topicA
This is useful if F and G were flawed in some way, or should not be part of topicA.
因此,您可以使用相同的机制准确地cut-out master 上的引用和您的 branch-exclusive 提交之间的所有提交。
如果我处于你的位置并且我的分支机构在你所在的州,我会使用 of rebase --onto
。这是因为它可能是最有效的 one-liner 而且我很乐意这样做。
话虽如此,您可以做的另一件事在概念上可能更简单一点,就是查看您的 reflog
,找到您的分支在变基之前的提交,然后将您的分支恢复到如何在变基之前:
git reset --hard <previous-commit-id>
现在就好像您没有进行第一次变基一样,您可以继续使用最初打算使用的提交 ID 重做。
我有一个本地提交 A
并且我使用了 git pull --rebase origin master
,所以现在 A
堆叠在最新的远程主提交之上,但我意识到我没有想要那样做,并且需要实际重新定位到 master 的早期愿景。
我发现提交哈希 earlier_commit_hash
与较早的提交相关联并做了 git pull --rebase origin earlier_commit_hash
,但似乎没有任何改变(我的本地分支仍然包含 [= 之后的所有远程主提交) 13=]).
完成我需要的正确方法是什么?
来自 master 的较新提交已经是您本地历史的一部分,这就是为什么当您对较旧的提交使用 rebase
时它们将被继承。请注意,它们可能仍会被新的哈希重写,这会使情况变得更糟。
您可以试试 rebase --onto
。来自联机帮助页:
A range of commits could also be removed with rebase. If we have the following situation:
E---F---G---H---I---J topicA
then the command
git rebase --onto topicA~5 topicA~3 topicA
would result in the removal of commits F and G:
E---H'---I'---J' topicA
This is useful if F and G were flawed in some way, or should not be part of topicA.
因此,您可以使用相同的机制准确地cut-out master 上的引用和您的 branch-exclusive 提交之间的所有提交。
如果我处于你的位置并且我的分支机构在你所在的州,我会使用 rebase --onto
。这是因为它可能是最有效的 one-liner 而且我很乐意这样做。
话虽如此,您可以做的另一件事在概念上可能更简单一点,就是查看您的 reflog
,找到您的分支在变基之前的提交,然后将您的分支恢复到如何在变基之前:
git reset --hard <previous-commit-id>
现在就好像您没有进行第一次变基一样,您可以继续使用最初打算使用的提交 ID 重做。