如何正确地将多个合并还原为远程主控
Posted
技术标签:
【中文标题】如何正确地将多个合并还原为远程主控【英文标题】:How to correctly revert multiple merge to remote master 【发布时间】:2017-04-11 22:07:18 【问题描述】:我有 5 个分支 master,branch-1,branch-2,branch-3 和 branch-4。
我对 branch-3 进行了一些更改并合并到 master 并再次执行了两次,现在我想回到所有 3 合并之前的阶段,我可以签出该提交并创建另一个包含数据的分支我多么需要它。
与
git checkout 1ba671a79a0cc57129768ce1ad0218e17841e4d9
然后
git checkout -b "experimental-branch"
我在实验分支中拥有我想要的阶段中的所有内容,但我想要在主分支中。我该怎么做?
我想将我的主人重置为这个提交“1ba671a79a0cc57129768ce1ad0218e17841e4d9
”,之后有不需要的提交和合并。
【问题讨论】:
【参考方案1】:如果你真的想将你的 master
分支重置为这个提交,那么只需使用:
git reset --hard 1ba671a7
这会将您的 master
分支重置为此提交。但请记住,这将改写这个分支的历史。这意味着它可能会给共享分支的任何其他人带来问题(我假设目前没有其他人在共享)。
要推送更新的master
,您需要使用:
git push --force origin master
强制分支到存储库。
如果您尝试恢复公共共享分支上的提交,您确实应该考虑改用 git revert
。
【讨论】:
我的实验分支没有任何东西要提交,我需要用git commit -m 'all your contents'
再次提交吗?
I have all contents in the stage
...这是什么意思?如果你没有做任何工作,为什么要将这个分支带回当前的master
?
我不想要我在那次提交和合并之后所做的更改我不想要那些。
所以你想将你的master
分支重置为这个提交,丢弃在那之后发生的一切,对吗?
@PrafullaKumarSahu 我在上面给了你答案。以上是关于如何正确地将多个合并还原为远程主控的主要内容,如果未能解决你的问题,请参考以下文章
CMake项目结构:如何正确地将库合并在一起并将它们包含在多个可执行文件中