【问题标题】:Rebase remote branch onto master while keeping the remote branch updated将远程分支重新定位到 master 上,同时保持远程分支更新
【发布时间】:2017-02-16 16:11:07
【问题描述】:

我正在尝试将远程分支重新定位到 master 上,但我想保持远程分支指向它的提交,只是基于 master 中的不同点。

这是我的结构:

A - B - C - D  (origin/master)
 \
  R - S - T (origin/develop)

我想要:

A  - B - C - D (origin/master) - R - S - T (origin/develop)

如果没有某种合并,这样的变基是否可能?

【问题讨论】:

  • 在这种情况下你为什么不想只使用“合并”?
  • 我还想将 origin/develop 上的提交压缩成 1 个提交到 origin/master
  • 在 Git 中,您在 本地 分支上完成所有工作。像origin/develop 这样的远程跟踪分支只需记住你的Git 在origin 的Git 上看到的内容,这是你的Git 上次在origin 上与Git 进行对话时的情况。要以某种方式更改远程分支,您必须说服其他 Git 进行更改(通常是先在本地进行更改,在 您的 分支上进行更改,然后再推送该更改)。

标签: git rebase git-remote


【解决方案1】:

要了解有关 rebase 的更多信息,您可以查看此 link 或在您的终端写 git rebase --help

要解决您的问题,有一个简单的方法,请按照以下步骤操作:

git branch -D develop //this will remove your local develop repository
git fetch //update references 
git checkout develop //change to develop branch, but because you deleted, this command will also download the origin/develop
git rebase -p origin/master

在这一步你可能会遇到一些冲突,所以解决它们和git add FILES THAT HAD CONFLICTSgit rebase --continue

现在检查 rebase 后是否一切正常,如果是的话

git push -f origin develop

【讨论】:

  • 这是否意味着在 rebase 之前,我们的本地 repo 丢失并且上游 repo 被克隆到本地?
【解决方案2】:

在你的上下文中,你会这样做

git rebase origin/master    
git rebase origin/master origin/develop

官方参考:开头

      A---B---C topic
     /
D---E---F---G master

做完之后

git rebase master
git rebase master topic

我们有

              A'--B'--C' topic
             /
D---E---F---G master

(来源:https://git-scm.com/docs/git-rebase

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 2016-10-24
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 2020-05-22
    • 2018-05-19
    相关资源
    最近更新 更多