从分支 B 合并时,分支 A 上的提交不存在
commit reverted on branch A not present when merged from branch B
我不小心提交到分支 dev
,而不是 feature-branch
,并推送到远程。根据 git undo commit on protected branch? 的建议,我采取了以下步骤来撤消对 dev
的提交并将其提交到 feature-branch
在 dev
上,撤消本地提交并将其存储起来,以便我稍后可以将其提交到 feature-branch
:
git reset --soft HEAD~1
git restore --staged .
git stash
git pull
git revert SHA-1
git commit -m "reverting commit made to wrong branch"
git push
在 feature-branch
上:
git stash pop
git add .
、git commit -m "making commit in the right place"
太棒了。在这一点上,dev
回到了我在那里错误地提交之前的位置,并且 feature-branch
有了新的变化。然后我做了更多工作并向 feature-branch
.
添加了更多提交
创建从 feature-branch
到 dev
的拉取请求并将其合并后,似乎已还原的提交不存在于 dev
。
这里发生了什么?
现在我只会创建一个新分支并手动重写提交,但我不明白为什么这一系列事件导致我在 IDE 中看到差异(vscode 和 gitlens),但是 github 告诉我没有差异?
tl;dr: 看来您针对同一个问题尝试了两种不同的解决方案,但最终没有按照您的想法行事。
如果您不小心向 dev
提交了某些内容并想修复它,您有两种(类别)方法来处理它:
- 您可以
reset
返回上一个提交,实质上是删除最近的提交。
- 您可以
revert
提交。
不清楚您是否推出了 dev
并提交了错误,但根据描述,我怀疑您可能没有。在那种情况下,reset
将是最好的方法。如果您已经推送了错误的提交并且其他人可能已经在使用它,那么 revert
会是最好的。显然你试图同时做这两件事;看起来您先进行了重置,然后进行了还原。
第一次重置“删除”了提交,然后尝试还原不存在的内容是行不通的,因此您会留在开始的地方。 (您还记得在尝试时看到过任何这样的信息吗?)
请注意,如果您之前推出 dev
并决定恢复是要走的路,在重置提交后您将无法执行 git push
如果没有强制推送。
旁注,要将该提交移动到 feature-branch
,您可以简单地 cherry-pick
通过它在 dev
上的哈希 ID 提交,而不是尝试通过存储它的额外工作,我怀疑这就是导致您开始走这条路的原因。
提示:我强烈建议经常使用 git log
或 git log --graph
。考虑使用 UI 来显示分支历史并在每次提交后刷新它,这样您就可以准确地看到自己在做什么,并且错误会变得很明显。
我不小心提交到分支 dev
,而不是 feature-branch
,并推送到远程。根据 git undo commit on protected branch? 的建议,我采取了以下步骤来撤消对 dev
的提交并将其提交到 feature-branch
在 dev
上,撤消本地提交并将其存储起来,以便我稍后可以将其提交到 feature-branch
:
git reset --soft HEAD~1
git restore --staged .
git stash
git pull
git revert SHA-1
git commit -m "reverting commit made to wrong branch"
git push
在 feature-branch
上:
git stash pop
git add .
、git commit -m "making commit in the right place"
太棒了。在这一点上,dev
回到了我在那里错误地提交之前的位置,并且 feature-branch
有了新的变化。然后我做了更多工作并向 feature-branch
.
创建从 feature-branch
到 dev
的拉取请求并将其合并后,似乎已还原的提交不存在于 dev
。
这里发生了什么?
现在我只会创建一个新分支并手动重写提交,但我不明白为什么这一系列事件导致我在 IDE 中看到差异(vscode 和 gitlens),但是 github 告诉我没有差异?
tl;dr: 看来您针对同一个问题尝试了两种不同的解决方案,但最终没有按照您的想法行事。
如果您不小心向 dev
提交了某些内容并想修复它,您有两种(类别)方法来处理它:
- 您可以
reset
返回上一个提交,实质上是删除最近的提交。 - 您可以
revert
提交。
不清楚您是否推出了 dev
并提交了错误,但根据描述,我怀疑您可能没有。在那种情况下,reset
将是最好的方法。如果您已经推送了错误的提交并且其他人可能已经在使用它,那么 revert
会是最好的。显然你试图同时做这两件事;看起来您先进行了重置,然后进行了还原。
第一次重置“删除”了提交,然后尝试还原不存在的内容是行不通的,因此您会留在开始的地方。 (您还记得在尝试时看到过任何这样的信息吗?)
请注意,如果您之前推出 dev
并决定恢复是要走的路,在重置提交后您将无法执行 git push
如果没有强制推送。
旁注,要将该提交移动到 feature-branch
,您可以简单地 cherry-pick
通过它在 dev
上的哈希 ID 提交,而不是尝试通过存储它的额外工作,我怀疑这就是导致您开始走这条路的原因。
提示:我强烈建议经常使用 git log
或 git log --graph
。考虑使用 UI 来显示分支历史并在每次提交后刷新它,这样您就可以准确地看到自己在做什么,并且错误会变得很明显。