git pull
在分支机构上运作是否正确?
在存储库中,当在不同分支上运行git pull
时,它会做不同的事情吗?
在git pull
之后没有指定任何参数时,
origin
中的同名分支拉到当前分支? 感谢。
答案 0 :(得分:3)
首先,不要使用git pull
。这个命令永远不需要,如果你在Git-master之前避免它,你会更好。但是如果你坚持使用它,因为它很方便 - 并且 方便 - 请记住它首先运行git fetch
,然后,根据各种事情,通常会运行git merge
秒。
git pull
在分支机构上运作是否正确?
是的 - 但最好将git pull
视为正在运行两个 Git命令,因为这是git pull
所做的事情< / em>的
在存储库中,当在不同分支上运行
git pull
时,它会做不同的事情吗?
不清楚你在不同的分支上的意思&#34;&#34;和&#34;做不同的事情&#34;。你可能意思是:
git checkout branch1; git pull; git checkout branch2; git pull
或:
git checkout branch1; git pull origin branch2 branch3
而后者非常不同。 (#34的简短回答;何时使用此表格&#34; 从不。长答案是&#34;尚未:首先了解章鱼合并,然后重新阅读文档然后,一旦你成为Git大师,你就会意识到你可能永远不应该直接与git pull
进行章鱼合并,但至少现在你知道什么时候可以安全使用{{1}在所有。&#34;)
git pull
上的前git pull
,然后在branch1
上再次运行git pull
- 只需执行下面列出的四个步骤两次,一次点击branch2
1}},然后又在branch1
上。
在
branch2
之后没有指定任何参数时,
- 是否仅从远程
git pull
中的同名分支拉到当前分支?- 它是否为任何其他分支做任何事情?
让我们首先处理第二部分,因为这很容易:&#34;不,只要你不是在谈论远程跟踪分支。 #34;
接下来,我们需要注意一个假设:远程名称为origin
。您可以拥有多个遥控器,如果这样做,显然最多其中一个被命名为origin
。即使您只有一个遥控器,也可以随意调用它。因此,遥控器origin
的想法开始时有点不稳定。
(通常情况下,它 origin
。大多数人只有一个遥控器,它的名字为origin
,所以只有#{}} 遥控器,而不是&#34;七种不同遥控器中的一种,可以选择&#34;或其他什么。)
当你在没有参数的情况下运行origin
时,Git会:
识别当前分支的上游。例如,git pull
的上游可能是branch1
。请注意,此上游有两个部分:
origin/branch1
。origin
。要制作远程跟踪分支,Git会有效地将这两个部分粘贴在一起,这就是我们将其视为branch1
的原因。但仍有两部分。
不要求上游分支名称匹配本地分支名称。它只是一个好主意。
(有时你必须违反这个&#34;好主意&#34;,当你有两个或更多遥控器时。例如,假设远程origin/branch1
有一个名为{{1}的分支并且不同的远程fred
有一个名为develop
的分支。您现在在 存储库中有susan
和develop
。您想要做某事使用这两个;你会使用哪些分支名称?也许你可以调用一个fred/develop
而另一个susan/develop
。但是现在上游名称不再与本地名称匹配:上游fred-develop
为susan-develop
,而不是fred-develop
。)
将上游分为两部分:远程和分支名称,如远程所示。
使用多个参数运行fred/develop
。 fred/fred-develop
步骤将使用远程URL调用另一个Git。一旦你的Git在互联网手机上拥有外国Git,你的Git将获得他们在他们的分支上的任何新提交,你还没有任何地方。
我们假设当前分支为git fetch
,上游为git fetch
。如果你自己的Git不是太古老(至少是版本1.8.4),这会更新你的branch1
。 (如果您的Git比这个早,那么origin/branch1
提供的参数会阻止您的远程跟踪分支更新。这不是一个好的情况,您应该更新您的Git版本。所有工作,这很难解释。如果你完全避免使用origin/branch1
,Git 1.8.3及更早版本的奇怪方式不再重要,因为git pull
更新所有您的远程跟踪分支,即使在这些古老版本的Git中。)
既然git pull
在您的存储库中有这些新提交,在您的git fetch origin
远程跟踪分支下,您就是全部组。稍后git fetch
将很快完成,因为您现在已这些新提交。
使用多个参数运行origin/branch1
,或其他一些Git命令。
最后一步 - 通常git fetch
- 会影响您的分支。当git merge
成功时,通常会进行新的提交。与所有普通的Git命令一样,使 new commit 将提交添加到当前分支。当git merge
执行快进而不是进行新提交时,也影响你当前的分支。
因此,我们可以这样说:当git merge
运行git merge
时,git pull
步骤会影响您当前的分支,就像git merge
一样总是会影响您当前的分支。
但是,您可以要求git merge
运行不同的第二个命令。具体来说,您可以进行设置,以便git merge
运行git pull
而不是git pull
。为了弄清楚它的作用,我们必须看看git rebase
做了什么,而且更复杂 - 但最后,它也会影响你当前的分支,就像git merge
一样。 1 因此我们也可以说:当git rebase
运行git merge
时,git pull
步骤会影响您当前的分支,方式与git rebase
<相同strong>始终 1 会影响您当前的分支。
当我们将所有这些事实放在一起时,我们最终会看到git rebase
第二命令影响当前分支。并且,仅影响当前分支,因为git rebase
和git pull
仅在当前分支上 。
(第一个命令 - git merge
步骤影响远程跟踪分支。但是因为这些只是你Git的记忆方式从外国Git获得的东西,最后一次从外国Git获得的东西,这不是很重要。)
最后,不要使用git rebase
。使用git fetch
,然后根据git pull
:git fetch
或fetch
的内容选择您选择的任何一个命令。
1 有一种方法可以让git merge
影响另一个分支,但幸运的是,git rebase
并没有使用它。 (你可能也不应该,除非你知道你在做什么。这是非常微不足道的:它首先只是另一个分支名git rebase
,然后就好像你自己这样做了,并且没有指定额外的分支名称。)
答案 1 :(得分:2)
如果您从分支机构执行git pull,它将仅提取提交给该分支的新更改。因此,例如,如果我也在对您的分支进行更改并将新的更改推送到repo。你可以从你的分支机构进行git pull,它会随着我的更改而更新。