克隆特定分支

31

我对git版本控制还不熟悉,不知道如何克隆/拉取存储库的特定分支。尝试获取项目的 master 分支,但默认为 test_1 分支。

我尝试使用命令 git clone,但它抓取了默认的 test_1 分支。我还尝试阅读其他问题,但命令让我感到困惑,我不想弄坏任何东西。

我该如何克隆这个项目的主分支,以便可以进行更改并将其推送到该分支?


6
可能是与如何克隆特定的Git分支?重复。 - osowskit
我不明白为什么这个使用master的答案不是你要找的。https://dev59.com/JnI-5IYBdhLWcg3wVWti#4568323 - osowskit
@JeffP 请保持礼貌。如果链接的答案不能帮助您,请简要说明原因并提供更多细节。 - jadhachem
7个回答

44
你可以使用以下标志--single-branch--depth来下载指定的分支并限制要下载的历史记录量。
你将从某个时间点克隆repo,并仅为给定的分支。
git clone -b <branch> --single-branch <url> --depth <number of commits>

--[no-]single-branch


仅克隆指定分支或主分支远程 HEAD 指向的单个分支的历史记录。

进一步获取到所得到的仓库只会更新此选项用于初始克隆的分支的remote-tracking分支。如果远程的HEAD在使用--single-branch克隆时未指向任何分支,则不会创建remote-tracking分支。


--depth

创建浅克隆,历史记录将被截断为指定的提交次数


你知道从哪个 Git 版本开始有这个选项吗? - Eric Platon

31
您可以使用此命令来克隆特定的分支:

git clone <url of repo> -b <branch name to be cloned>

Eg: git clone https://www.github.com/Repo/FirstRepo -b master

6
-b选项并非用于指定要克隆的分支,而是用于在克隆之后切换到指定的分支。 - 1615903
2
这完全不是真的,请参阅文档。整个存储库被克隆,然后检出指定的分支。 - 1615903
是的,那是真的。 - aks7

8

6
我认为您可能没有完全理解git默认如何提供所有分支的所有历史记录。
使用git clone --branch master <URL>将会得到您想要的结果。
实际上,在任何其他仓库中,只需执行git checkout master即可切换到主分支,而不是像您一样选择了test_1
(@CodeWizard所说的都是正确的,我只是认为这比您实际需要的更高级。)

5
一个git仓库有多个分支。每个分支都遵循一个开发线路,并且它的起源是在某个时间点上的另一个分支(除了第一个分支,通常称为master,它作为默认分支开始,直到有人更改,这几乎从不发生)
如果您是新手,请记住这两个基本原则。现在,您只需要克隆仓库,它将位于某个分支上。如果该分支是您要寻找的分支,那太棒了。如果不是,您只需要切换到其他分支-这称为checkout。只需输入git checkout <branch-name> 在某些情况下,您想要获取特定分支的更新。只需执行git pull origin <branch-name>,它将“下载”新的提交(更改)。如果您没有进行任何更改,它应该很容易。如果您还在该分支上引入了更改,则可能会出现冲突。如果您需要更多关于此情况的信息,请告诉我。

1
请尝试以下操作: git clone --single-branch --branch <分支名称> <URL地址> 用您的分支名称替换<branchname>,用您的URL地址替换<url>
URL地址将类似于http://username@git.test.com:portno/yourrepo.git

0
你可以尝试这个。
git clone --single-branch --branch <branchname> host:/dir.git

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