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

创建git新分支并在第一次推送之前更新它

git
  •  0
  • dragonfly02  · 技术社区  · 7 年前

    当前在Git Bash中创建新分支时使用: git checkout -b <newbranch> ,这没有任何有关新分支的跟踪信息。我知道,如果我做一些更改并推送它,它将自动创建一个远程分支,例如。 origin/<newbranch> 并将本地新分支设置为跟踪远程新分支;这可以通过git config设置实现。

    但问题是我不能用 git pull 在我第一次推到本地新分支之前,因为它只有在第一次推之前才有上游设置。在git中创建新分支以允许在第一次推送之前进行更新的“正确”方法是什么?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Tim Biegeleisen    7 年前

    如果您已经在本地创建了一个新分支,但没有对其进行任何提交,那么新分支的头部实际上只是指向创建它的某个其他分支的指针。所以说做一个 git pull 在这个新的分支上,因为正如您所指出的,还没有跟踪分支。即使你已经做了一些承诺,并且你的头指向你自己的工作,也没有上游信息可以从中获取。相反,唯一新的信息源是您从中创建分支的原始分支。因此,我将您的需求解释为从源分支引入新信息。

    相反,在您提交新的本地工作之后,您可以在原始源分支上重新定位:

    get fetch origin
    git rebase source
    

    这将从源分支引入任何新的提交,然后重新应用尚未推送的本地提交。我的回答的要点是,如果你没有推动,那么新信息的唯一来源就是你创建新分支的分支。

        2
  •  1
  •   Mark Adelsberger    7 年前

    创建了一个本地分支 branch ,您可以设置远程跟踪 origin/branch

    git branch -u origin/branch branch
    

    但是,如果第一次更新来自远程回购,为什么首先要手动创建loacl分支?

    git fetch
    

    现在你有了远程跟踪参考。

    git checkout branch-name
    

    假设只有一个遥控器有一个名为 <remote>/branch-name ,这将创建本地分支并设置跟踪。