Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建git新分支并在第一次推送之前更新它_Git - Fatal编程技术网

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

创建git新分支并在第一次推送之前更新它,git,Git,目前,当我在git bash中使用:git checkout-b创建一个新分支时,它没有关于新分支的任何跟踪信息。我知道如果我做了一些更改并按下按钮,它将自动创建一个远程分支,例如origin/,并将我的本地新分支设置为跟踪远程新分支;这可以通过git配置设置实现 但问题是,在第一次推送到本地新分支之前,我无法使用git pull从master获取更新,因为在第一次推送之前,它不会设置上游。在git中创建新分支的“正确”方法是什么,以允许在第一次推送之前进行更新?如果您在本地创建了一个新分支,但

目前,当我在git bash中使用:
git checkout-b
创建一个新分支时,它没有关于新分支的任何跟踪信息。我知道如果我做了一些更改并按下按钮,它将自动创建一个远程分支,例如
origin/
,并将我的本地新分支设置为跟踪远程新分支;这可以通过git配置设置实现


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

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

相反,在您完成新的本地工作后,您可以重新设置原始源分支的基础:

get fetch origin
git rebase source

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

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

相反,在您完成新的本地工作后,您可以重新设置原始源分支的基础:

get fetch origin
git rebase source

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

创建本地分支后,您可以通过以下方式设置对
来源/分支的远程跟踪

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

git fetch
现在您有了远程跟踪参考

git checkout branch-name

假设只有一个远程分支具有名为
/branch name
的跟踪参考,这将创建本地分支并设置跟踪。

创建了本地分支
分支
,您可以通过以下方式设置
来源/分支
的远程跟踪

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

git fetch
现在您有了远程跟踪参考

git checkout branch-name

假设只有一个远程分支具有名为
/branch name
的跟踪参考,这将创建本地分支并设置跟踪。

如果我在本地非主分支上创建了一个新分支,那么新本地分支的负责人是什么?你说它创建时只是指向其他分支的指针,它和我创建新分支的本地非主分支的负责人一样吗?我同意git fetch origin
,但为什么事后要重新设置基址?为什么不合并git?或者在这种情况下是相同的?@stt106是的,当您创建一个新分支而不提交时,您的头指向与源分支相同的提交。一旦你做出了承诺,情况就不是这样了。但是,如果你还没有推动,那么通过你新的本地分支不可能有任何新的信息。如果我在本地非主分支上创建了一个新分支,那么新的本地分支的负责人是什么?你说它创建时只是指向其他分支的指针,它和我创建新分支的本地非主分支的负责人一样吗?我同意git fetch origin,但为什么事后要重新设置基址?为什么不合并git?或者在这种情况下是相同的?@stt106是的,当您创建一个新分支而不提交时,您的头指向与源分支相同的提交。一旦你做出了承诺,情况就不是这样了。但是,如果您还没有推送,那么通过新的本地分支不可能有任何新信息。第一次更新来自远程主机,我不想从新的本地分支跟踪它。@stt106:这实际上意味着,您在错误的提交位置将分支装箱-这与您提出的问题不同。把树枝挪开。(或者,如果您已经有本地提交,您可以重新设置基础。)对不起,我的git非常基本(您可能已经知道),您的意思是我不应该在创建它的地方创建新的本地分支吗?我希望我不必每次都从最后一个主节点创建一个新的本地分支,否则我的假设是错误的?@stt106-创建分支时,关键是要进行独立于
master
(或任何其他现有分支)上发生的任何更改,直到显式组合更改(通过合并或重定基址)。如果您在进行任何更改之前从master获得更新,并决定在那里开始分支