Git rebase会在哪里进行更改?

4

Git文档对此并不清晰,但网上的每个人似乎都知道。

比如,我当前正在一个名为feature/test的功能分支上。如果我执行git rebase master,那么rebase会在哪里进行?在feature分支上还是在master分支上?也就是说,哪个分支被更改了?它的语法和git merge一样,当前分支是否被改变?那样的话,我需要回到master,然后将我的feature分支与其合并吗?

编辑:我想做的是将master分支"合并"(在这种情况下是rebase)到我的feature分支中,然后将feature分支"合并"回master分支。

1个回答

4

当您将feature/test基于master进行变基时,feature/test分支会发生变化。例如:

           master
           |
           V
A----B-----C
      \
       D----E
            ^
            |
            feature/test

在进行完

git checkout feature/test
git rebase master

你的代码库会长成这个样子

            master
            |
            V
 A----B-----C----D'----E'
                       ^
                       |
                       feature/test

请注意,D'并不等于D,因为它现在有一个新的父级。尽管如此,它包含相同的更改。
编辑:
“我要如何将feature/test中的更改带回主分支?”
由于feature/test与主分支相符,git将只是快进主分支。
git checkout master
git merge feature/test

会导致
                       master
                       |
                       V
 A----B-----C----D'----E'
                       ^
                       |
                       feature/test

有关详细信息,请参阅Git-分支-基本的分支和合并


我该如何将feature/test分支的更改合并回主分支(master)?直接进行简单的合并是否安全,还是也需要在主分支上进行变基(rebase),以保留项目历史记录? - Eduard Luca
你可以安全地合并到主分支(master),因为显然不会有冲突,因为你只是在当前状态之上构建。 - kasoban

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