我想获取远程存储库的单个分支(不是所有分支),并创建一个本地跟踪分支,该分支可以跟踪对该远程分支的进一步更新。远程存储库中的其他分支非常大,所以我希望避免获取它们。我怎么做呢?


当前回答

答案实际上取决于当前的跟踪分支列表。你可以使用git fetch <remote_name> <branch_name>从remote获取特定的分支,前提是该分支已经在跟踪分支列表中(你可以使用git branch -r检查它)。

让我们假设我之前用——single-branch选项克隆了远程,在这种情况下,我拥有的唯一跟踪分支就是“克隆”的分支。我有点困惑的建议手动调整git配置,以及键入git remote add <remote_name> <remote_url>命令。因为“git remote add”设置了一个新的远程,它显然不能与现有的远程存储库一起工作;提供“-t branch”选项对我没有帮助。

如果远程存在,并且你想要获取的分支存在于该远程:

使用git branch -r检查是否可以将该分支视为跟踪分支。如果不是(就像我的例子中一个分支克隆),通过“git remote set-branches”添加这个分支到跟踪分支列表中,带——add选项:

Git远程设置分支——add <remote_name> <branch_name>

从远程获取你已经添加的分支:

Git获取<remote_name> <branch_name> 注意:只有在从远程获取新的跟踪分支后,你才能在跟踪分支列表中使用git branch -r看到它。

使用"checkout——track"创建并签出一个新的本地分支,它的"branch_name"将与跟踪分支相同:

Git checkout——track <remote_name>/<branch_name> . txt

其他回答

git 版本 2.16.1.Windows.4

只是做一个git获取remoteRepositoryName branchName(例如:git获取origin my_local_branch)就足够了。Fetch将完成,并将创建一个具有相同名称的新本地分支,并将跟踪设置为远程分支。

然后执行git checkout branchName

git 版本:2.74

我是这样做的:

git remote add [REMOTE-NAME] [REMOTE-URL]
git fetch [REMOTE-NAME] -- [BRANCH]

让我用我的两便士来曲解马德森先生的回答:

Git获取<remote_name_or_url> <branch_name> git checkout FETCH_HEAD -B <branch_name>

与马德森的提议相比,这两条线路的主要优势在于,即使分支机构已经在本地存在,它也能工作。

如果你想改变默认的“git pull”和“git fetch”只获取特定的分支,那么你可以编辑.git/config,使远程配置看起来像这样:

[remote "origin"]
  fetch = +refs/heads/master:refs/remotes/origin/master

默认情况下,这只会从原点获取master。 查看更多信息:https://git-scm.com/book/en/v2/Git-Internals-The-Refspec

编辑:刚刚意识到这和-t选项对git远程添加所做的事情是一样的。至少,如果你不想在远程添加后删除远程并使用-t再次添加远程,这是一个很好的方法。

选择任何您想要使用的<remote_name>(可以随意使用origin 跳过第一步。) Git远程添加<remote_name> <remote_url> Git获取<remote_name> <分支> 选择任何您想使用的<your_local_branch_name>。可以与<branch>相同。 Git checkout <remote_name>/<branch> -b <your_local_branch_name>

希望有帮助!