从远程Git分支拉取代码,当本地不存在该分支时

22

当本地不存在分支 B , 但在远程仓库中存在时,

git branch
 * A

git branch -a
 * A
  remotes/origin/B

我该如何将 B 拉取到本地仓库?我需要先 git checkout B 吗?当我在分支 A 上时,是否应该先执行 pull

请帮我澄清一下。

4个回答

31

获取所有远程分支,而不进行任何合并操作:

git fetch

接着从远程仓库的分支(origin/B)创建一个本地分支(B),并检出该分支以切换到它:

git checkout -b B origin/B

那么你现在处于B分支,可以将A合并到其中:

git pull origin A

17

如果本地分支b不存在,则执行git pull,然后简单地执行git checkout b,该分支将自动创建。 其他选项包括执行git fetch origin/b


1
当我执行 git pull 后,是否应该期望在执行 git branch 时看到 B 分支呢?(但实际上没有出现) - James Raitsev
不,它不会显示为分支,在你执行 git pull 后,它仍然是一个远程分支。你需要 checkout 那个分支才能将其看作本地分支。 - c00kiemon5ter
2
踩一下。我不是 Git 的新手,但即便如此,我仍然无法理解你的回答中的流程。 - Green
1
是的,我认为git的行为可能随着时间的推移而改变。这个解决方案不起作用。你必须明确地检出本地并将其与远程关联起来,就像@tee在这个git checkout -b B origin/B答案中提到的那样。 - Mike Williamson

5

你需要做的事情:

git checkout -b B origin/B

从远程创建本地分支。


5
现在的语境下,仅使用git checkout B已经足够了,不必再使用老式的git命令。 - Bill Door
1
@BillDoor git checkout B 会创建一个名为B的新分支,但它不会指向远程分支origin/B。这是我在git版本2.16.2.windows.1上的经验。 - Merin Nakarmi

-1

有用的git技巧:

要将远程分支获取到本地仓库,请使用IDE拉取/获取选项或以下命令:

git pull <remote_branch_name> <local_branch_name>

这将创建一个本地分支,例如主分支。

要将本地分支检出到当前目录,请执行以下操作。

git checkout master .

这将把您的项目放入当前工作目录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接