如何从父分支进行变基操作?

8

以下是 Git 分支 XY 的当前情况:

   A - B [origin/master]
     \
      C - D - G - H [origin/X]
           \
            E - F [Y]

其中,

开发者1正在分支 X 上工作

而我正在分支 Y 上工作。

XY 的父分支。


目前,分支 Y 在远程指向 origin/Y

在继续在分支 Y 上工作之前,我想在分支 Y 中包括 origin/X 的更改。因此,我希望看到类似于:

A - B [origin/master]
     \
      C - D - G - H [origin/X]
                   \
                    E1 - F1 [Y]

1) 我的分支 Y 如何通过 git 命令进行 rebase 操作?

2) 这个命令(git branch -u origin/X Y) 是干什么用的?

1个回答

17

非常简单:

git checkout Y
git rebase origin/X

假设有另一位开发者已经将X rebase到主分支上,那么你需要在此基础上进行操作。

第二个问题:它会创建一个名为Y的本地分支,其中“upstream”分支被设置为origin/X。当你尝试使用git pullgit pull -r等命令时,upstream就像Y将用作基准的分支。


无论分支X的所有者是否从master上进行了变基,都是分支X的所有者的问题。尽管我建议过他,但分支X的所有者没有从master上进行变基。分支Xmaster落后了7-8个提交。我只想确保分支X的最新提交在Y中。其余的问题就交给管理层处理吧。 - overexchange
跟进第二个问题:git push 命令会将更改推送到 origin/X 吗? - overexchange
嗯...从最终结果的角度来看,合并或变基得到的东西是一样的...但是变基允许您通过将您的修订版本移动到其他分支的顶部来获取其他分支的更改...而不是在单个合并修订版本上合并两个独立的分支。想想一个功能分支。如果您开发、合并、再开发、再合并......然后再开发,再合并,如果您想将该功能移动到一个不相关的分支(比如,将该功能回溯),那么需要什么呢?您需要挑选修订版本,不包括合并... - eftshift0
如果你使用了变基(rebase),你会得到一个可以轻松移动(重新变基)的单行功能。 - eftshift0
你已经在你的特性分支上删除了与你的主题分支开发无关的文件?确保把它们找回来,否则以后会很麻烦。实际上,如果这些更改还没有被推送,你应该修改那些删除它们的修订版本,以便“它从未发生过”。 - eftshift0
显示剩余15条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接