代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

“git rebase master”是不是真的意味着“git将自己重新建立到master上”?

git
  •  0
  • nonopolarity  · 技术社区  · 4 年前

    git rebase 一开始,因为我不知道“rebase”这个词是什么意思。

    后来看来,它的意思是“把某物的基部从A改为B”。

    所以当我们这么做的时候

    git checkout foo
    git rebase master
    

    那么“rebase master”这个词实际上并不意味着“rebase the master branch”?它实际上意味着“将当前分支的基改为使用主分支作为基”?所以它实际上意味着

    git checkout foo
    git rebase-myself-onto master
    

    ? 它是把整个分支 foo 让它“基于”主人,不是吗?

    1 回复  |  直到 4 年前
        1
  •  1
  •   Tim Biegeleisen    4 年前

    在第一个例子中:

    git checkout foo
    git rebase master
    

    foo master 主人

    主人 分支机构。

    在处理Git工作流概念时,一张图片胜过千言万语。在重定基址之前考虑一个场景:

    master: A -- B -- C
                  \
    foo:            D -- E
    

    git rebase master :

    master: A -- B -- C
                       \
    foo:                D' -- E'
    

    你可以清楚地看到 D E (命令被称为re base的原因)。那个新基地是海流的龙头 主人 也就是说你的 branch现在拥有了所有可能已经进入的最新提交 因为你最初的分支机构。还请注意,我将 D' E' 用撇号犯。这是因为当Git在新的基上重新应用提交时,它实际上创建了 提交(但是,如果您没有冲突并做出很大的更改,那么在功能上很可能与原始的提交非常相似)。

        2
  •  0
  •   Chuck Lu    4 年前

    完整的命令是 git rebase 上游分行目标分行
    git签出目标分支 在做其他事情之前。 否则它将保留在当前分支上

    所以,当你使用命令 git rebase主机
    实际上你可以简单地使用 git rebase master foo 为了达到同样的效果:
    git签出foo
    git rebase主机