我不小心把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 popgit add .,git commit -m "making commit in the right place"太棒了。此时,dev回到了我错误地在那里提交之前的状态,而feature-branch有了新的更改。然后,我做了更多的工作,并向feature-branch添加了更多的提交。
在创建了从feature-branch到dev的拉请求并将其合并后,似乎dev上不存在已恢复的提交。
这里发生了什么事?
现在,我只需要创建一个新分支并手动重写提交,但我不明白为什么这一系列事件导致我在IDE (vscode和git透镜)中看到了差异,但是github告诉我没有区别?
发布于 2021-12-22 21:42:51
tl;dr:,似乎您尝试了两种不同的解决方案来解决相同的问题,但最终没有做您认为做过的事情。
如果您意外地向dev提交了一些东西,并且希望修复它,那么您有两种(类别)方法来处理它:
reset回到以前的提交,实质上删除最近的提交。revert .目前还不清楚您是否在错误的提交上推出了dev,但根据描述,我怀疑您可能没有。在这种情况下,reset应该是最好的选择。如果您已经提交了错误的提交,而其他人可能已经使用了它,那么revert将是最好的。显然,您试图同时完成这两项操作;看起来您首先进行了重置,然后进行了还原。
第一次重置“删除”提交,然后尝试还原不存在的内容将无法工作,因此您将被留在起点。(您还记得在尝试时看到过这样的消息吗?)
注意,如果您以前推出了dev,并决定恢复是一种方法,在重新设置提交后,您将无法在没有强制推送的情况下执行git push。
附带注意,要将提交转移到feature-branch,您可以简单地使用它在dev上拥有的散列ID提交cherry-pick,而不是尝试完成存储它的额外工作,我怀疑这是导致您开始沿着这条道路前进的原因。
提示:我强烈建议经常使用git log或git log --graph。考虑使用一个显示分支历史的UI,并在每次提交之后刷新它,这样您就可以确切地看到您在做什么,错误就会变得很明显。
https://stackoverflow.com/questions/70453029
复制相似问题