当通过git checkout BranchA连接到BranchA时,如果我使用git pull BranchB,那么BranchB代码会被拉入BranchA吗?

当通过git checkout BranchA连接到BranchA时,如果我使用git pull BranchB,那么BranchB代码会被拉入BranchA吗?,git,Git,当我通过git checkout BranchA连接到BranchA并执行git pull或git pull origin BranchA或git pull BranchA时,来自远程BranchA的代码将被拉入本地BranchA 但是,当通过git checkout BranchA连接到本地BranchA时,假设我做了git pull BranchB或git pull master,那么git会尝试从服务器上的相应分支将代码拉到本地BranchA?是 在这两种情况下,获取部分是相同的:从远程获

当我通过
git checkout BranchA
连接到
BranchA
并执行
git pull
git pull origin BranchA
git pull BranchA
时,来自远程
BranchA
的代码将被拉入本地
BranchA

但是,当通过git checkout BranchA连接到本地
BranchA
时,假设我做了
git pull BranchB
git pull master
,那么git会尝试从服务器上的相应分支将代码拉到本地
BranchA

在这两种情况下,获取部分是相同的:从远程获取新的引用

但是(
git pull
作为
git fetch
+
git merge
),合并部分将有所不同

当然,这取决于您的配置,但在大多数设置中,
git-pull-branchB
将包括

git fetch
git merge origin/branchB

在这两种情况下,获取部分是相同的:从远程获取新的引用

但是(
git pull
作为
git fetch
+
git merge
),合并部分将有所不同

当然,这取决于您的配置,但在大多数设置中,
git-pull-branchB
将包括

git fetch
git merge origin/branchB

git pull
docs():

将远程存储库中的更改合并到当前分支中

这通常用于使用远程服务器上相应分支的更改来更新分支;但定义它的目的是将远程更改(您指定的任何此类更改)合并到当前分支中

另一方面,虽然您的意思似乎很清楚,但您的术语暗示了对git概念的一些可能的混淆。在git中,您并没有真正“连接”到这个分支或那个分支。在git中,您只需说分支已签出


公平地说,这个术语有点模糊,因为您可以签出一个分支,也可以不签出任何分支(分离的头状态),而只签出一个提交—即使该提交是分支的尖端。但是在任何一种情况下,符号ref
HEAD
指向的是您将要说的内容,并且如果这是一个分支-通常是-那么
pull
将把更改合并到该分支中。

来自
git pull
文档():

将远程存储库中的更改合并到当前分支中

这通常用于使用远程服务器上相应分支的更改来更新分支;但定义它的目的是将远程更改(您指定的任何此类更改)合并到当前分支中

另一方面,虽然您的意思似乎很清楚,但您的术语暗示了对git概念的一些可能的混淆。在git中,您并没有真正“连接”到这个分支或那个分支。在git中,您只需说分支已签出


公平地说,这个术语有点模糊,因为您可以签出一个分支,也可以不签出任何分支(分离的头状态),而只签出一个提交—即使该提交是分支的尖端。但是在任何一种情况下,符号ref
HEAD所指向的都是您所说的签出,如果这是一个分支(通常是),那么
pull
将把更改合并到该分支中。

“连接到”=本地签出?是的,这是正确的“连接到”=在本地签出?是的,没错,所以git fetch始终跨所有分支,而不是针对某个特定分支?是的,默认情况下,它从远程获取所有引用(分支)。(如果添加了
--all
,则从所有远程设备)确定git fetch始终跨所有分支,而不是针对某个特定分支吗?是的,默认情况下,它从远程设备获取所有引用(分支)。(如果添加了
--all
,则从所有遥控器)