创建git new分支并在第一次推送之前对其进行更新

时间:2018-08-10 10:26:56

标签: git

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

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

2 个答案:

答案 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的跟踪参考,那么这将创建本地分支并设置跟踪。