简短答案:如何克隆特定分支
要从 Git 仓库克隆特定分支,请使用以下命令:
git clone --single-branch --branch <branch_name> <repository_url>
将 <branch_name> 替换为目标分支名称,将 <repository_url> 替换为仓库的 URL。该命令会在本地创建该分支的副本,使您可以立刻在该分支上专注开发。
示例
在整篇文章中,我们将使用这个仓库。您可以用它在自己的机器上练习本文提到的命令。该仓库包含三个分支:
main:默认分支,包含两个文本文件。add-new-file:新增了第三个文件的分支。modify-file:修改了第二个文件的分支。
以下是克隆 add-new-file 分支的方法:
git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git
什么是 git clone?
默认情况下,git clone 会将整个仓库复制到您本地机器的新目录中,克隆所有分支。其语法如下:
git clone <repository_url>
要克隆示例仓库,我们可以执行:
git clone https://github.com/fran-aubry/git-clone-example.git
执行该命令后,所有分支都会被复制到您的本地。但同一时间只有一个分支的文件可见,这个分支被称为已检出分支。克隆仓库后,默认分支(通常为 main 或 master)会被检出。

切换分支
完成完整克隆后,我们可以使用 git checkout 命令切换(检出)到目标分支。比如要检出 modify-file 分支,我们可以这样做:
git checkout modify-file

克隆深度
在使用 Git 时,对分支的更改通过 git commit 命令进行提交来保存。每次提交都会为该分支创建一个新状态,必要时您可以回退到该状态。可以把每次提交看作一张快照,Git 会记录所有这些快照,您可以随时将分支回退到任意快照。
不带任何选项的 git clone 会将每个分支的所有提交都下载到您的本地。根据项目大小,这可能占用本地存储的较大空间。如果您确定不需要完整历史,可以使用 --depth 参数来指定要克隆的提交数量(或快照数)。
若只加载最新一次提交来克隆主分支,请使用以下命令:
git clone --depth=1 https://github.com/fran-aubry/git-clone-example.git
克隆特定分支
我们已经学习了如何使用 git clone 克隆仓库。默认情况下,该命令会将所有内容克隆到本地。很多时候,您只关心某个特定分支,此时只克隆该分支更高效。这样既能节省磁盘空间,又能在克隆后无需切换分支即可立刻开始工作。
延续写书的类比:假设您被指派重写书籍的第二章,那么您只需克隆执行该任务的分支,无需访问其他章节修订相关的分支。
您可以通过添加 --single-branch 和 --branch 参数并跟上分支名,指示 Git 只克隆单个分支:
git clone --single-branch --branch <branch_name> <repository_url>
我们来逐一解释该命令:
git clone:用于将远程仓库复制到本地的基础 Git 命令。
--single-branch:告知 Git 只克隆单个分支。如果未指定分支,则会克隆默认分支。
--branch <branch_name>:指定要克隆的分支。这里的 <branch_name> 是您想要克隆的分支名称。<repository_url>:仓库的 URL。
例如,仅克隆我们仓库的 modify-file 分支,可执行:
git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git
如何使用已克隆的分支
在分支上工作时,您需要进行三项基本操作:
- 通过创建当前状态的快照来保存当前工作。
- 上传您的更改,让所有人都可以访问。
- 下载他人的更改,并与您的更改合并。
使用 git commit 保存更改
在 Git 中,保存工作称为创建一次提交(commit)。这个过程会为您正在处理的分支创建当前状态的快照。
提交后,分支状态会保存在您的本地机器上,便于在不同进度阶段之间切换。

在 Git 中提交更改,使用 git commit 命令。不过,在提交之前,Git 需要知道要将哪些文件包含在本次提交中。您需要用 git add 命令指定要保存的文件。其语法如下:
git add <path_to_file>
其中 <path_to_file> 是您想提交的文件路径。举例来说,如果我们在示例仓库的 modify-file 分支上,为 file2.txt 新增了一段文字,您可以通过执行:
git add file2.txt
在将需要包含在提交中的所有文件添加完成后,执行以下命令进行提交:
git commit -m <message>
这里的 <message> 参数应是用双引号括起的简短信息,概述本次更改。例如:
git commit -m "Add paragraph"
以下是提交消息的一些约定。它们对于确保项目中所有成员的理解与沟通非常重要:
- 使用祈使语气: 提交消息以动词原形开头(例如 “Add”、“Fix”、“Update”)。例如,不要写 “Added new feature”,而写 “Add new feature”。
- 简洁且具描述性: 力求简短,最好不超过 50 个字符,但要优先保证对更改的清晰描述。不要写 “Changed stuff”,而写 “Update styling for navigation bar”。
- 避免泛泛而谈: 避免诸如 “Fix bugs” 或 “Make improvements” 这样含糊的消息;要具体一些,如 “Fix bug in login form validation” 或 “Improve readability of documentation”。
使用 git push 上传更改
提交会在您的本地机器上创建更改的快照。若要让他人访问您的更改,需要将其上传。为此,请使用 push 命令。
Git 中 push 命令的基本语法为:
git push <remote> <branch>
解释如下:
<remote>:要推送至的远程仓库名称。默认情况下,克隆仓库后远程仓库名为 origin。<branch>:要推送到远程仓库的分支名称。如果省略该参数,Git 会根据当前分支和远程跟踪配置执行推送。
以下是一些常见的 git push 用法:
- 推送当前分支的更改:
git push - 推送特定分支的更改:
git push origin <branch>
使用 git pull 下载更改
Git 使大型团队能够并行协作于同一项目。当同事修改了您也在处理的分支时,您的本地分支可能会落后于远程分支。
要下载他人的提交,我们使用 git pull 命令。Git 中 pull 命令的基本语法为:
git pull <remote> <branch>
各参数含义如下:
<remote>:要拉取自的远程仓库名称。默认名称为 origin。<branch>:要拉取更改的分支名称。若未指定,Git 会使用当前分支及其上游分支。
以下是一些常见的 git pull 用法:
- 拉取当前分支的更改:
git pull - 拉取特定分支的更改:
git pull origin <branch>
提交-拉取-推送的工作流
使用 Git 时,我建议频繁拉取更新,确保您的本地分支保持最新。建议遵循以下最佳实践:
- 开始工作前,先为当前分支拉取最新更新,确保在最新版本上进行开发。
- 经常提交,每次提交聚焦于小而逻辑相关的更改。
- 进行一些更改并完成一次提交后,再次拉取以更新分支,防止与他人并行更改产生偏差。
- 最后,将您的更改推送到远程仓库。

Git 冲突
当执行 git pull 命令从远程仓库下载更改时,可能会遇到其他提交修改了与您本地提交相同的行。Git 会尝试自动合并更改,在许多情况下可以成功。例如,如果对同一文件的不同部分进行了修改,Git 能够无缝合并,因为提交影响的是不同区域。
但如果您和其他贡献者修改了同一段文字,Git 将无法判断保留哪个版本,从而产生合并冲突。此时,您需要手动解决冲突,决定保留哪些更改。
若需更多解决冲突的指导,建议阅读这篇文章:如何解决 Git 中的合并冲突。
从 GitHub 下载
在某些情况下,您只想在本地保存仓库副本以供使用,并不打算修改它。如果这是一个公共仓库,您无需在本地安装 Git。可以直接在 GitHub 上点击 Code 按钮,然后点击 Download Zip 按钮进行下载,如下图所示:

结论
Git 克隆可以将 Git 仓库复制到本地,使您能够使用代码或在其基础上扩展新功能。克隆仓库时会下载所有分支,这可能会占用大量磁盘空间。
分支用于处理特定更改或功能。只克隆特定分支可以让您仅针对相关更改进行贡献,而无需下载无关内容,从而显著减少磁盘占用,保持本地更清爽。
如果您想进一步学习该主题,推荐这篇 GitHub 和 Git 初学者教程。

想象您在写一本书,想尝试一些新点子,但又不想弄乱原稿。您可以为每个想法开一本新笔记本,把不同的草稿分开保存。
Git 是一种版本控制系统,允许软件开发者通过“分支”以相同方式管理代码。每个分支就像一条独立的开发路径,您可以在不影响主代码库的情况下探索更改。
在本文中,我将带您使用
git clone,重点介绍如何克隆特定分支。若想进一步学习 Git,推荐这门 Introduction to Git 课程。我们先给赶时间的读者一个简短答案,然后再展开细节。