当前,当我使用git checkout -b <newbranch>
在git bash中创建新分支时,该分支上没有任何跟踪信息。我知道如果我进行一些更改并将其推送,它将自动创建一个远程分支,例如origin/<newbranch>
并将我的本地新分支设置为跟踪远程新分支;这可以通过git config设置来实现。
但是问题是,在我进行第一次推送到本地新分支之前,我无法使用git pull
从master那里进行更新,因为在第一次推送之前它没有上游设置。在git中创建新分支以允许在第一次推送之前进行更新的“正确”方法是什么?
答案 0 :(得分:1)
如果您在本地创建了一个新分支,但尚未对其进行任何提交,则该新分支的HEAD本质上只是指向创建该分支的其他分支的指针。因此,现在就说在这个新分支上进行git pull
毫无意义,因为正如您所指出的,还没有跟踪分支。即使您做了一些提交,并且HEAD指向您自己的工作,也没有上游可以获取信息。而是,唯一的新信息来源是创建分支所依据的原始分支。因此,我认为您的要求是从源分支引入新信息。
相反,在提交新的本地工作之后,您可以基于原始的源分支:
get fetch origin
git rebase source
这将从源分支中引入任何新的提交,然后重新应用尚未推送的本地提交。我的回答的要点是,如果您尚未推送,则新信息的唯一来源就是您从中创建新分支的分支。
答案 1 :(得分:1)
创建了本地分支机构branch
后,您可以说出设置origin/branch
的远程跟踪信息
git branch -u origin/branch branch
但是,如果第一次更新来自远程存储库,为什么要首先手动创建loacl分支?
git fetch
现在您有了远程跟踪参考。
git checkout branch-name
假设只有一个遥控器具有名为<remote>/branch-name
的跟踪参考,那么这将创建本地分支并设置跟踪。