将基础分支变基到特性分支

11

如果我在一个特性分支上工作了很长时间(几周),并且我想定期将主分支rebase到我的分支中,那么我是否应该总是切换到主分支、拉取最新的代码,然后再切换回特性分支并将主分支rebase到我的分支?


当然,为了获取和合并主分支,没有必要切换到主分支。因此,您的前三个步骤可以合并为一步! - matt
那个命令会是什么样子? - Jason Y
1
你可以说 git fetch origin master:master - matt
3
顺便提一下,没有所谓的rebase into。你不会将master进行rebase。你需要将你的特性分支rebase到master上。因此,你的标题是错误的,每个涉及rebase这个词的句子都是错误的。你对Git的理解可能也是错误的。 - matt
嗯,有趣。我会深入挖掘并尝试填补我的知识盲区。 - Jason Y
1个回答

14

假设我已经在功能分支上,我只需执行以下操作:

git fetch && git rebase origin/master

你可以像注释中提到的那样,使用git fetch origin master:master只获取master,但我更喜欢获取所有内容以获得完整的本地表示远程仓库。

而且,由于你没有直接在master上工作,你可以忽略master,并在origin/master上进行变基,它已经通过fetch更新了。


我很好奇这是如何工作的。git fetch 不会以任何方式更改本地的 master,那么它如何帮助将特性分支推进到 master 上?(我的答案则通过变基对 master 进行快进,因此 master 被推进,特性分支也被推进。) - matt
@matt 好观点。我在 git rebase origin/master 中忘记了 origin/。我已经相应地编辑了答案,并解释了我的推理。 - VonC
愚蠢的问题,但是 fetch 只是获取元数据,它不会实际更新我的特性分支,对吧? - Jason Y
@RyanW。默认情况下,通过fetch更新所有远程跟踪分支,包括 origin/masterfetch = +refs/heads/*:refs/remotes/origin/*:参见 https://git-scm.com/book/en/v2/Git-Internals-The-Refspec。 - VonC

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