我们有一个项目,我们曾经不得不稍微回顾一下 Git 历史并从旧提交开始一个新分支(我们在这里将其称为“new_branch”)。现在,所有的开发都在 new_branch 中进行,在创建分支之后,旧的 Master 就没有用了。所以现在我们有一个看起来像这样的情况:
C1 = Commit 1, C2 = Commit 2, etc.
C1
|
C2
|\
C3 \
| \
... \
| \
Master --> C17 \
\
C18
|
...
|
C37 <-- new_branch
Run Code Online (Sandbox Code Playgroud)
所以我现在想做的是放弃(撤消?)在分支点之后在 Master 中所做的所有提交,即 C3 到 C17。至少,这就是我认为我想做的事情?我的意思是,C3 到 C17 现在没用了,如果我可以撤消它们,那么我可以将 new_branch 合并回 Master,让 Master 再次有用。
所以我的问题是,这是实现我能够再次使用 Master 的目标的正确方法吗?我应该使用哪个命令(我在 Linux 的命令行中使用 Git)来撤消 C3 到 C17 的提交?这是一个工作项目,所以我把它做好是非常重要的。
最直接的解决方案是简单地强制推new_branch送到原点master:
git checkout new_branch
git push -f master
Run Code Online (Sandbox Code Playgroud)
然后master通过以下几种方式之一修复您的本地:
git reset --hard origin/master(在分行master)git branch -D master(不在分支上master,再次拉动以获取更新的)在这种情况下不需要master使用new_branch.
这将(显然)抹去现有master的内容并将其替换为new_branch. 确定你的意图。
正如 Romain 在下面指出的那样,使用git branch -f可以避免局部修复步骤:
git branch -f master new_branch && git push -f origin master
Run Code Online (Sandbox Code Playgroud)
因为它也在本地移动分支指针。
与许多 git 问题一样,有很多方法可以解决这个问题,其他答案可能同样可行。
| 归档时间: |
|
| 查看次数: |
697 次 |
| 最近记录: |