Git 在切换到本地分支并推送未完成之前意外提交到主分支-如何还原和合并
所以我在这里有点傻。我在主分支上工作,做了一系列提交,意识到我在主分支上,签出到另一个分支,假设提交会被带过来,在分支中提交一次,然后推送。在检查github repo时,我看到只有最后一次提交被推送 所以,我如何撤销它,将所有提交合并到本地分支,然后重新推送它 我的提交历史记录:Git 在切换到本地分支并推送未完成之前意外提交到主分支-如何还原和合并,git,github,Git,Github,所以我在这里有点傻。我在主分支上工作,做了一系列提交,意识到我在主分支上,签出到另一个分支,假设提交会被带过来,在分支中提交一次,然后推送。在检查github repo时,我看到只有最后一次提交被推送 所以,我如何撤销它,将所有提交合并到本地分支,然后重新推送它 我的提交历史记录: commit 9dc4373ea546dd90e27d3c0a75b39c2656799638 (HEAD -> feature/implement-checkout, origin/feature/imple
commit 9dc4373ea546dd90e27d3c0a75b39c2656799638 (HEAD -> feature/implement-checkout, origin/feature/implement-checkout, master)
Implement checkout service
commit 0cf3ec312c94d0b6a9d94f37b439ff4bea70199f
Add seeds
commit b6bcabcf15eacad8c94e96e4e325f5b2695a8ade
Add bills and bill discounts
commit a7cf1c5261b1fbbd2cadc0bf8899ab5729ea5ed7
Add bill item model
commit 52a812a5f495f9950efee887bfe7678355c56f18
Create bill model
commit 7b17847d45c1d04ed86928599ed7e16770f19fcc
Add item model
commit 188e82a1b36fe8439457c3a8f85609fb4f2c9f40
Add Rspec
commit 9b4c9393d19339a5264ce1d51db935f73a9a84ea
Initialize app
安全的方法是将单个提交恢复到另一个分支,然后按照您想要的方式重新构建它
# from other_branch
git revert HEAD
git cherry-pick master~6^..master
git cherry-pick HEAD~8
此时,您的其他分支应如下所示:
other_branch: ... A -- A_R -- M1 -- M2 -- M3 -- M4 -- M5 -- M6 -- M7 -- A'
这里,A
是您对此分支所做的初始单次提交,A\u R
是恢复提交。在这一点上,在我们从master
中选择M1
之前,您的分支就好像您从未进行过该提交。接下来,我们通过M7
选择最近提交给master
的7个提交作为M1
。最后,我们在A'
中重新应用您的单个提交
现在,您可以定期将此分支推送到GitHub:
git push origin other_branch
最后,为了进行清理,我们需要删除您对master
所做的提交。假设您尚未按下主控键,我们只需进行硬复位:
# from master
git reset --hard HEAD~7
承诺的顺序对你真的重要吗?最好是。我已经把它设置好了,这样它的订购方式就让森塞塔克斯非常渴望得到回复。我已经在上面添加了我的提交历史记录。因此,为了确保我是否应该运行git revert HEAD
,然后运行git cherry pick master~6
,最后运行git cherry pick HEAD~8
?只是对号码有点不确定我的答案不是这么说的。您是否向master
提交了6次?没有提交7次。您在回答中提到,git cherry pick master~2^..master
将获得最近的3次提交,因此我假设git cherry pick master~6^..master
将获得7次提交?这是一个全新的应用程序,如果它有帮助的话-如果更容易的话,可以抓取所有的提交吗?