【发布时间】:2022-01-23 21:54:16
【问题描述】:
我不小心提交到分支dev,而不是feature-branch,并推送到远程。根据git undo commit on protected branch?的建议,我采取了以下步骤来撤消dev上的提交并将其提交给feature-branch
在dev 上,在本地撤消提交并将其隐藏,以便稍后将其提交给feature-branch:
git reset --soft HEAD~1git restore --staged .git stashgit pullgit revert SHA-1git 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 告诉我没有区别吗?
【问题讨论】:
-
您在
feature-branch中进行了哪些提交?它是在您还原的原始提交之前、原始提交和还原之间还是在还原提交之后对dev的提交? -
这是一个很好的问题......老实说,在这一点上我不能确定我到底是用哪种方式做到的。每个场景将如何发展?
-
请注意,您可以查看
git log --graph来回答来自@bk2204 的问题。你会确切地看到你从哪个提交分支出来。 -
如果您在合并后显示
dev的git log --graph可能会有所帮助,然后解释您所说的“已恢复的提交不存在于开发人员”的意思。 -
有点与问题无关,但我认为
git stash apply可能只是git stash?因为“应用”会将现有的存储区放入您的工作目录,听起来您做了相反的事情,这只是从工作目录中的文件创建一个新的存储区。
标签: git github merge version-control