【问题标题】:Git - master is ahead of origin/master - Don't want it to beGit - master 领先于 origin/master - 不希望它成为
【发布时间】:2015-10-20 22:36:08
【问题描述】:

我的 master 分支领先 origin/master 14 次提交。我希望它与 origin/master 同步,因为这 14 个提交是针对特定分支而不是 master 的。我该如何回滚?

【问题讨论】:

标签: git


【解决方案1】:

您的主分支有一些 (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 同步。

【讨论】:

    【解决方案2】:

    假设您没有将代码推送到远程...

    $git checkout yourBranch
    $git rebase master
    

    这会将更改从 master 带到 yourBranch

    现在摆脱 master 中的提交

    $git rebase -i HEAD~15
    

    这将打开一个包含最近 15 次提交列表的窗口,删除所有这些行。然后保存,然后推送

    编辑:根据@skeggse 的建议,使用最后 15 次提交。解释见cmets

    【讨论】:

    • 当你以交互方式变基,并删除文件中的所有行时,变基将取消操作。
    • 这是我发现的最好的...只要确保删除对应于正确提交的十四行 lol
    • git rebase -i HEAD~15 然后删除 15 行是对变基的奇怪滥用。使用 git reset HEAD~15 只需 移动 分支,而不会带来任何奇怪的麻烦。
    • 他要删除 14 个提交,这不是变基的奇怪用法,这正是他需要做的。他也不想失去那些提交,这就是为什么我告诉他/她首先对 master 进行 rebase
    【解决方案3】:

    如果你希望你的本地 master 与 origin/master 相同,那么你想 checkout master 并运行:

    git reset --hard origin/master
    

    请注意,这将丢弃工作目录中的任何更改。

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 2012-01-31
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 2012-05-22
      • 2012-02-23
      • 2017-05-19
      相关资源
      最近更新 更多