【发布时间】:2015-10-20 22:36:08
【问题描述】:
我的 master 分支领先 origin/master 14 次提交。我希望它与 origin/master 同步,因为这 14 个提交是针对特定分支而不是 master 的。我该如何回滚?
【问题讨论】:
-
你想对本地提交做什么?他们在master或其他分支上吗? (根据您的描述不确定)
标签: git
我的 master 分支领先 origin/master 14 次提交。我希望它与 origin/master 同步,因为这 14 个提交是针对特定分支而不是 master 的。我该如何回滚?
【问题讨论】:
标签: git
您的主分支有一些 (14) 次提交,这些提交是针对其他一些分支而不是主分支的。因此,首先必须将工作复制到其正确的分支。假设这项工作实际上是在名为 dev-branch 的分支中进行的。在我们这样做之前,我们需要切换到 dev-branch。
git checkout dev-branch
现在,使用 git merge 命令将工作从 master 带到 dev-branch。 git merge 命令合并当前(dev-branch)分支的指定分支。
git merge master
如果发生合并冲突,请遵循以下说明:http://softwarecave.org/2014/03/03/git-how-to-resolve-merge-conflicts/。如果没有冲突,请继续下一步。
在将提交复制到正确的分支后,必须从主分支中删除不需要的提交,并且根据您的要求,本地主节点需要与远程主节点(源/主节点)同步。 git reset --hard 命令丢弃从工作目录到指定状态的更改,我们在这里指定为远程主机的状态。
git reset --hard origin/master
到目前为止,所有工作都已移至您所需的分支,已从本地 master 丢弃提交,并且本地 master 与远程 master 同步。
【讨论】:
假设您没有将代码推送到远程...
$git checkout yourBranch
$git rebase master
这会将更改从 master 带到 yourBranch
现在摆脱 master 中的提交
$git rebase -i HEAD~15
这将打开一个包含最近 15 次提交列表的窗口,删除所有这些行。然后保存,然后推送
编辑:根据@skeggse 的建议,使用最后 15 次提交。解释见cmets
【讨论】:
git rebase -i HEAD~15 然后删除 15 行是对变基的奇怪滥用。使用 git reset HEAD~15 只需 移动 分支,而不会带来任何奇怪的麻烦。
如果你希望你的本地 master 与 origin/master 相同,那么你想 checkout master 并运行:
git reset --hard origin/master
请注意,这将丢弃工作目录中的任何更改。
【讨论】: