假设当前分支是myFeaturex。而且本地的分支是最新的,并且有来源。以下两个陈述是否等效?
推荐的语法是什么?

git rebase origin/develop
git rebase develop

请注意:这与git rebase origin vs.git rebase origin/master

最佳答案

您的本地分支develop跟踪origin/develop并且它们可能并不总是具有相同的提交。

$ cat ~/.git/config

[remote "origin"]
    url = [email protected]/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

这意味着我们有一个任意命名为“来源”的“远程”(生活在其他地方的存储库)。
您的本地develop分支正在从远程存储库跟踪分支,并且有一个称为origin/develop的数据的本地引用。在大多数情况下,我们认为这两件事总是包含相同的承诺。但是,您需要显式更新本地的分支以从源站获取最新数据。这通常是通过拉动来完成的:
$ git status
    on branch develop
$ git pull
    ...pulls latest changes from origin

然而,develop实际上有两个步骤:agit pull和afetch。它在后台执行的第一步是从源站获取所有最新的提交,您可以使用这些提交
git fetch origin

这将更新分支,但不会更新本地分支。
最新的提交隐藏在本地.git目录中的“幕后”,您可以从名为“origin/develope”的分支中引用它。
在获取之后,要使您的本地分支真正成为merge,您必须执行origin/develop。从技术上讲,这不是一个合并,而是一个“快进”,这意味着Git足够聪明,可以让您的本地分支匹配而不需要实际合并任何内容。出于这个原因和其他原因,合并让我在吉特发疯。
因此,如果您重新设置develop的值,它有可能会过期(比origin更旧)。
我在重新平衡之前亲自执行此工作流:
git fetch --all
git rebase origin/branchname

这意味着我可以将所有数据拉下来,而不必过多地考虑我所在的分支,并从远程存储库中重新获取最新的代码。稍后,在git merge origin/develop分支上,一个简单的origin将确保您是最新的。

10-08 14:44