我对 git 很陌生,我正在尝试弄清楚以下情况。 bitbucket 中有一个 repo,其中包含主代码和一些同事正在工作的分支。 在将该存储库克隆到公共本地文件夹 F(以某种方式对每个人都可用)中时不时地将其克隆到公共文件夹 F 中后,我想将主文件夹拉入公共文件夹 F,但我只想拉出主文件夹。我想避免在 F 中,用户可以导航到代码尚未准备好用于生产的不同分支。
显然我只是尝试了 git pull 但这下载了所有内容,包括远程源中的分支。
在查看了 https://git-scm.com/docs/git-pull 中的 git pull 修饰符后,我不知道我必须使用哪一个。
答案 0 :(得分:1)
您可以进行单分支克隆:
git clone --single-branch --branch master <theURL>
现在这个本地存储库除了 origin/master
没有任何远程分支,执行 git fetch
不会自动下载其中任何一个。列出分支机构的人不会看到它们。可以强制下载另一个分支——地球上没有任何力量可以阻止这种情况,除非你想在服务器端采取措施——但至少它们的存在不会很明显。
但是,说了这么多,我认为您的目标可能是错误的。我们在一个有几十个分支的项目上工作,这些分支都属于其他公司,正在开发自己的代码版本;只有一个分支属于我们。我们通过(得到这个)远离其他所有人的分支机构来远离其他所有人的分支机构。 Git 是合作的;只需告诉您的员工合作即可。
答案 1 :(得分:0)
您(通常)对 git pull
的作用感到困惑。您可以将 git pull
视为 git fetch
和 git merge
之间的交叉。具体来说,没有任何参数的 git pull
通常会:
第一个从远程存储库获取所有数据,包括远程分支标签但不会将其合并到您的主分支。所以,是的,如果您查看 git branch -r
的输出,所有远程分支名称都会在本地显示。但是,它们不会更改您本地 main
分支的内容。只有第二个命令 (git merge
) 执行此操作,并且它只影响您合并的一个分支。它需要多个 merge
才能合并到任何其他分支。
所以:结果是 git pull
只合并到一个上游分支。
(注意:以上所有名称均假设您的远程名称和分支名称)