git pull 只拉主分支,没有 repo 的其他分支

时间:2021-06-21 22:25:25

标签: git

我对 git 很陌生,我正在尝试弄清楚以下情况。 bitbucket 中有一个 repo,其中包含主代码和一些同事正在工作的分支。 在将该存储库克隆到公共本地文件夹 F(以某种方式对每个人都可用)中时不时地将其克隆到公共文件夹 F 中后,我想将主文件夹拉入公共文件夹 F,但我只想拉出主文件夹。我想避免在 F 中,用户可以导航到代码尚未准备好用于生产的不同分支。

显然我只是尝试了 git pull 但这下载了所有内容,包括远程源中的分支。

在查看了 https://git-scm.com/docs/git-pull 中的 git pull 修饰符后,我不知道我必须使用哪一个。

2 个答案:

答案 0 :(得分:1)

您可以进行单分支克隆:

git clone --single-branch --branch master <theURL>

现在这个本地存储库除了 origin/master 没有任何远程分支,执行 git fetch 不会自动下载其中任何一个。列出分支机构的人不会看到它们。可以强制下载另一个分支——地球上没有任何力量可以阻止这种情况,除非你想在服务器端采取措施——但至少它们的存在不会很明显。

但是,说了这么多,我认为您的目标可能是错误的。我们在一个有几十个分支的项目上工作,这些分支都属于其他公司,正在开发自己的代码版本;只有一个分支属于我们。我们通过(得到这个)远离其他所有人的分支机构来远离其他所有人的分支机构。 Git 是合作的;只需告诉您的员工合作即可。

答案 1 :(得分:0)

您(通常)对 git pull 的作用感到困惑。您可以将 git pull 视为 git fetchgit merge 之间的交叉。具体来说,没有任何参数的 git pull 通常会:

  1. git 获取来源
  2. git merge origin/main

第一个从远程存储库获取所有数据,包括远程分支标签但不会将其合并到您的主分支。所以,是的,如果您查看 git branch -r 的输出,所有远程分支名称都会在本地显示。但是,它们不会更改您本地 main 分支的内容。只有第二个命令 (git merge) 执行此操作,并且它只影响您合并的一个分支。它需要多个 merge 才能合并到任何其他分支。

所以:结果是 git pull 只合并到一个上游分支

(注意:以上所有名称均假设您的远程名称和分支名称)