【问题标题】:Git pull remote from different branch other than masterGit 从 master 以外的不同分支远程拉取
【发布时间】:2020-08-01 06:47:20
【问题描述】:

我想从除 master 之外的其他分支提取代码,即有两个分支 master 和 dummy,master 分支是在 dummy 分支之前的一些提交,而 dummy 包含一些不在 master 分支中的提交,所以我该怎么做将这两个分支都拉到本地,就像那里不同的提交一样。

我首先尝试创建虚拟分支并从远程提取它,但随后它包含来自主分支的提交

git clone repolink

git checkout -b dummy

git pull upstream dummy

我知道使用 master 以外的其他分支进行克隆

git clone --branch dummybranch --single-branch repolink

有什么方法可以将两个分支都包含在具有不同提交的单个本地仓库中?

【问题讨论】:

标签: git git-branch git-push git-pull


【解决方案1】:

git clone 已经将每个分支克隆到您的存储库。但它并没有为所有这些创建本地分支,只是master。其余的位于以远程名称为前缀的远程跟踪分支中,origin。您可以通过git branch -r 看到它们。

远程的主分支在远程跟踪分支origin/master。他们的dummyorigin/dummy。你的仓库看起来像这样。

              [origin/master]
A - B - C - D [master]
     \
      E - F [origin/dummy]

克隆已创建本地master 分支,但没有本地dummy

默认情况下,当您创建一个新分支时,它会脱离当前分支。如果您已签出master,您将在克隆后立即签出,然后git checkout -b dummymaster 之外创建一个名为dummy 的分支。

$ git checkout -b dummy

              [dummy]
              [origin/master]
A - B - C - D [master]
     \
      E - F [origin/dummy]

这是不对的。我们希望它关闭origin/dummy

删除不正确的dummygit branch -d dummy后,我们可以checkout origin/dummy,然后进行分支。

git checkout origin/dummy
git checkout -b dummy

              [origin/master]
A - B - C - D [master]
     \
      E - F [origin/dummy]
            [dummy]

或者作为简写,我们可以传入我们想要分支的地方

git checkout -b dummy origin/dummy

或者,甚至更短,您可以简单地检查您不存在的 dummy 分支,Git 将假定它应该是 origin/dummy 的本地分支。这由--guess 选项控制,默认为开启。

git checkout dummy
Branch 'dummy' set up to track remote branch 'dummy' from 'origin'.
Switched to a new branch 'dummy'

请参阅Working With Remotes in Pro Git 了解更多信息。

【讨论】:

  • 不确定它是旧的还是什么,但是当我检查一个与远程分支同名的分支时,它会自动将它链接到“原点”分支。
猜你喜欢
  • 2012-03-03
  • 2013-06-27
  • 2012-07-25
  • 2018-09-08
  • 2016-01-23
  • 2020-09-16
  • 2011-05-02
  • 1970-01-01
  • 2016-07-24
相关资源
最近更新 更多