# Git系列技术文档总结 **Repository Path**: jesslee/git ## Basic Information - **Project Name**: Git系列技术文档总结 - **Description**: git常用命令含义用法选项示例详解 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-15 - **Last Updated**: 2024-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Git系列技术文档总结 #### Git系列介绍 git常用命令含义用法选项示例详解 1. [【git系列】git-add 含义用法选项示例详解](https://zhuanlan.zhihu.com/p/681865228) 2. [【git系列】git-commit含义用法选项示例详解](https://zhuanlan.zhihu.com/p/681865407) 3. [【git系列】 git-clone含义用法选项示例详解](https://zhuanlan.zhihu.com/p/681891267) 4. [【git系列】git-pull 含义用法选项示例详解](https://zhuanlan.zhihu.com/p/681853996) 5. [【git系列】git push含义用法选项示例详解](https://zhuanlan.zhihu.com/p/681893299) 6. [【git系列】git merge含义用法选项示例详解](https://zhuanlan.zhihu.com/p/693932900) 7. [【git系列】git-revert含义用法选项示例详解](https://zhuanlan.zhihu.com/p/694784138) 8. [【git系列】git restore含义用法选项示例详解](https://zhuanlan.zhihu.com/p/694909148) 9. [【git系列】git switch含义用法选项示例详解](https://zhuanlan.zhihu.com/p/694808166) 10. [【git系列】git rebase含义用法选项示例详解](https://zhuanlan.zhihu.com/p/694919552) 11. [【git系列】git remote含义用法选项示例详解](https://zhuanlan.zhihu.com/p/694960607) 12. [【git系列】git-branch 含义用法选项示例详解](https://zhuanlan.zhihu.com/p/719637118) ![img](https://picx.zhimg.com/80/v2-60db15c2daaab221a4422485d43ef982_720w.png?source=d16d100b) ## [【git系列】 git-clone含义用法选项示例详解](https://zhuanlan.zhihu.com/p/681891267) *源自专栏《*[*Gradle ScalaTest markdown idea Git中文实用教程目录*](https://zhuanlan.zhihu.com/p/679330466)*?》* ## 描述 git clone命令用于将**存储库克隆到一个新目录**中。 它会创建一个新的目录,并在其中克隆指定的存储库。该命令还会为**克隆的存储库的每个分支创建远程跟踪分支**(可以使用git branch --remotes查看),并创建和检出一个从克隆存储库当前活动分支派生的初始分支。 在克隆之后,执行git fetch命令(不带参数)将更新所有远程跟踪分支,执行git pull命令(不带参数)将合并远程主分支到当前主分支(如果有的话)。这是默认配置,通过在refs/remotes/origin下创建对远程分支头的引用,并初始化remote.origin.url和remote.origin.fetch配置变量来实现。 ## 语法 ``` git clone [--template=] [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] [-o ] [-b ] [-u ] [--reference ] [--dissociate] [--separate-git-dir ] [--depth ] [--[no-]single-branch] [--no-tags] [--recurse-submodules[=]] [--[no-]shallow-submodules] [--[no-]remote-submodules] [--jobs ] [--sparse] [--[no-]reject-shallow] [--filter= [--also-filter-submodules]] [--] [] ``` ## 示例 1. 克隆一个存储库: shell $ git clone 这将克隆指定的存储库到当前目录中,并在新创建的目录中初始化一个Git存储库。 2. 克隆指定分支的存储库: shell $ git clone -b 这将克隆指定分支的存储库。 3. 克隆具有限深度的存储库: shell $ git clone --depth 这将以指定的深度克隆存储库,仅包含最近的个提交。 4. 从上游克隆: $ git clone git://git.kernel.org/pub/scm/.../linux.git my-linux $ cd my-linux $ make 1. 在不检出任何内容的情况下,创建一个借用当前目录的本地克隆: $ git clone -l -s -n . ../copy $ cd ../copy $ git show-branch 1. 在借用现有本地目录的同时,从上游克隆: $ git clone --reference /git/linux.git \ git://git.kernel.org/pub/scm/.../linux.git \ my-linux $ cd my-linux 1. 创建一个裸仓库以发布您的更改给公众: $ git clone --bare -l /home/proj/.git /pub/scm/proj.git 总之,git clone命令用于将存储库克隆到一个新的目录中。可以使用不同的选项来自定义克隆过程。 ## 简化选项 以下是一些常用的git clone命令选项: - --template=:指定模板目录,该目录中的文件和目录将被复制到新的存储库中。 - -b :指定要克隆的分支名称。 - --depth :指定克隆的深度,即克隆历史记录的最大提交数量。 - --single-branch:只克隆指定的分支,而不是克隆整个存储库。 - --no-tags:不克隆标签。 - --recurse-submodules:递归地克隆子模块。 - --jobs :指定并发克隆的作业数。 ## 全部选项 ### -l, --local 当要克隆的仓库位于本地机器上时,此选项绕过正常的"Git aware"传输机制,并通过复制HEAD和objects以及refs目录下的所有内容来克隆仓库。.git/objects/目录下的文件在可能的情况下采用硬链接以节省空间。 如果将仓库指定为本地路径(例如,/path/to/repo),则这是默认设置,--local实际上是一个无操作。如果将仓库指定为URL,则此选项将被忽略(我们不会使用本地优化)。指定--no-local将覆盖使用常规的Git传输而不是给出/path/to/repo时的默认设置。 如果仓库的$GIT_DIR/objects具有符号链接或者是符号链接,克隆将失败。这是一种安全措施,以防止意外解引用符号链接而复制文件。 注意:此操作与对源仓库进行并发修改类似,类似于在修改src时运行cp -r src dst。 ### --no-hardlinks 强制从本地文件系统上的仓库中复制.git/objects目录下的文件,而不是使用硬链接。如果您想备份您的仓库,这可能是有用的。 ### -s, --shared 当要克隆的仓库位于本地机器上时,自动设置.git/objects/info/alternates以与源仓库共享对象,而不是使用硬链接。结果仓库一开始没有任何自己的对象。 注意:这是一个可能危险的操作;除非您了解其作用,请不要使用它。如果使用此选项克隆您的仓库,然后删除分支(或使用任何使任何现有提交不可引用的Git命令),则某些对象可能变得不可引用(或悬空)。这些对象可能会被正常的Git操作(例如git commit)删除,该操作会自动调用git maintenance run --auto(参见git-maintenance[1])。如果这些对象被删除且被克隆仓库引用,则克隆仓库将变得损坏。 请注意,在使用--shared选项克隆的仓库中运行git repack而不带--local选项时,会将来自源仓库的对象复制到克隆仓库中的pack文件中,从而移除了使用clone --shared的磁盘空间节省。但是,运行git gc是安全的,默认情况下它使用--local选项。 如果要打破使用--shared克隆的仓库对源仓库的依赖关系,只需运行git repack -a,将所有对象从源仓库复制到克隆仓库的pack文件中。 ### --reference[-if-able] 如果参考仓库位于本地机器上,则自动设置.git/objects/info/alternates以从参考仓库获取对象。使用已经存在的仓库作为参考将需要从正在克隆的仓库复制更少的对象,从而减少网络和本地存储成本。当使用--reference-if-able时,如果不存在指定的目录,则跳过并发出警告,而不是中止克隆。 注意:请参阅--shared选项的注释,以及--dissociate选项。 ### --dissociate 只借用--reference选项指定的参考仓库的对象来减少网络传输,并在完成克隆后通过进行必要的本地对象副本制作来停止从它们借用。当从已经从另一个仓库借用对象的仓库进行本地克隆时,也可以使用此选项 - 新仓库将从同一仓库借用对象,并且可以使用此选项来停止借用。 ### -q, --quiet 静默操作,不向标准错误流报告进度状态。 ### -v, --verbose 详细运行。不会影响将进度状态报告给标准错误流。 ### --progress 默认情况下,如果标准错误流连接到终端,则在标准错误流上报告进度状态,除非指定了--quiet。该选项强制报告进度状态,即使标准错误流未定向到终端。 ### --server-option=