本篇文章给大家带来了关于git的相关知识,其中主要介绍了git init和git clone获取git仓库的相关问题,包括了git clone 从已有的git存储数据库中克隆仓库到本地目录等相关内容,希望对大家有帮助。

推荐学习:《Git教程》
通常获取git仓库有两种方式:
将本地未进行版本控制的本地目录转换为Git仓库;
从其他服务器上克隆一个已存在的Git仓库;
git init [-q | --quiet] [--bare] [--template=<template_directory>]
[--separate-git-dir <git dir>]
[--shared[=<permissions>]] [directory]该命令创建一个空的Git存储数据库,基本上会在.git目录中创建objects,refs/heads,refs/tags,和模板文件。还会创建一个引用主分支的HEAD的初始HEAD文件。
如果$GIT_DIR环境变量被指定了,则会替代./.git目录作为一个存储库的基础。
如果objects目录是通过$GIT_OBJECT_DIRECTORY环境变量指定的,那么在此目录下创建sha1目录,否则就是默认的$GIT_DIR/objects目录。
在已有的Git存储库中运行git init是安全的,他不会覆盖已存在的东西。重新运行git init的主要原因是获取新添加的模板(或者如果是--separate-git-dir选项,则将Git存储库移到另一个地方)。
[-q, --quite][--bare].git文件夹,如下:
[--template=<template_directory>].git存储数据库中,如果不指定,默认拷贝的是/usr/share/git-core/templates路径下的模板,里面包括如下内容:$ ls /usr/share/git-core/templates/ branches description hooks info

--template=<DIR>设置,$GIT_TEMPLATE_DIR环境变量设置,init.templateDir 配置设置,并且依次覆盖下一级设置。[--separate-git-dir <git dir>]git init会在当前目录下创建一个.git文件夹来储存Git数据库,此命令可指定一个路径来初始化Git存储数据库,并在本地创建一个.git文件来链接到指定的目录中去:
.git文件,文件中描述了当前仓库的Git存储数据库具体位置在哪里,并自动链接过去。[--shared[=<permissions>]]group权限。感兴趣可以git init --help查看此选项具体用法。[directory]git init命令则会在此目录中运行,如果目录不存在还会创建该目录。git clone [--template=<template_directory>]
[-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
[-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
[--dissociate] [--separate-git-dir <git dir>]
[--depth <depth>] [--[no-]single-branch] [--no-tags]
[--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
[--[no-]remote-submodules] [--jobs <n>] [--sparse] [--] <repository>
[<directory>]克隆一个仓库到新被创建的目录中,为克隆的Git存储库中每个分支创建远程跟踪分支(通过git branch --remotes可查看跟踪分支),并创建和检出克隆仓库当前活跃的分支到本地初始分支。
克隆完成后,一个不带参数的git fetch命令可以更新所有远程跟踪分支,并且不带参数的git pull命令还会将远程主分支合并到当前分支中。
这个默认配置是通过在refs/remotes/origin下创建对远程分支头的引用并且初始化remote.origin.url和remote.origin.fetch配置变量实现的。
[--template=<template_directory>]git init相关选项获取此选项作用。[-l, --local]refs,HEAD等信息到克隆的Git存储数据库,并将.git/objects通过硬链接形式链接到本地Git存储库以节约本地空间。-l选项但[url]是本地路径则还是会默认进行-l选项的行为,但是如果指定的是--no-local选项对本地仓库进行克隆则会走默认的git clone流程:
[-s, --shared].git/objects的对象通过硬链接的方式链接到本地的克隆仓库,使用此选项不会再硬链接.git/objects目录,而是在本地的.git/objects/info目录中创建一个alternates文件并在其中描述objects原先的位置并进行共享使用。git commit内部可能自动调用git gc --atuo)删除的,从而导致仓库被破坏。-s选项克隆的存储库中运行git repack时,如果没有指定--local,-l选项,则会将源存储库中的objects复制到克隆存储库中的一个包里面,从而消除了--shared选项带来的共享效果和节省的空间。直接运行git gc是安全的,因为默认使用的--local,-l选项。-s选项指定的仓库中打破对共享的依赖,则可以使用git repack -a命令将源存储库中的所有对象复制到克隆的存储库的一个包中。[--no-hardlinks].git/objects中的内容而不是使用硬链接的形式,在进行Git存储库备份时这个选项就很有用。[-q, --quite][-n, --no-checkout]
[--bare]<directory>/.git目录也不会将管理文件放到<directory>/.git中,而是为自己创建一个<directory>或者<directory>.git目录,里面保存的就是实际的Git数据库。这个选项也默认是--no-checkout的,不会检出任何HEAD,也不会自动跟踪任何远程分支,也不会创建相关的配置变量。[--mirror]--bare,对比--bare,--mirror不仅仅映射源的本地分支到目标的本地分支,它还映射所有引用(包括远程跟踪分支,笔记等),并设置refspec配置,以便所有这些引用都被目标存储库中的git远程更新覆盖。--bare和--mirror都是针对服务器使用,因为服务器只需要保存Git存储数据库而不需要实际操作git命令,所以当你在这两个选项创建的存储库执行Git命令会得到下面的打印:fatal: this operation must be run in a work tree
[-o <name>, --origin <name>]<name>来跟踪远程仓库。[-b <name>, --branch <name>]<name>分支。[-u <upload-pack>, --upload-pack <upload-pack>]/usr/bin/git-upload-pack,当服务器的git运行时会自动找到此路径的程序。[--reference[-if-able] <repository>].git/objects/info/alternates文件来从引用源存储库来获取objects,使用已经存在的Git存储库作为替代将会需要更少的objects被从源存储库拷贝过来,从而降低网络和本地存储成本。当使用--reference-if-able时,会跳过不存在的目录,并发出警告,而不是中止克隆。[--dissociate]--reference引用的Git存储库借用objects对象仅减少网络传输,并且在通过对借用objects进行必要的本地复制来进行克隆后,停止从引用库中借用对象。当本地克隆已经从另一个存储库借用objects时,可以使用此选项来停止新存储库从相同的存储库借用objects。此选项也主要用于Git服务器。[--separate-git-dir <git dir>]git init相关选项获取此选项作用。[--depth <depth>]<depth>指定,并获取所有分支顶部提交往后<depth>提交数量克隆到本地。如果也想简单克隆子模块也可以传递--shallow-submodules选项。[--[no-]single-branch]--single-branch只会克隆Git存储库中指定的一个分支,远程Git存储库中其他分支不会在本地被克隆下来,也不会在本地跟踪其他远程分支,只会跟踪单个远程分支。[--no-tags]remote.<remote>.tarOpt=--no-tags,以确保后续git pull和git fetch也不会操作到标签,除非显式的操作标签。--single-branch一起使用,以维护单个分支,在只维护某个缺省分支时很有用。[--recurse-submodules[=<pathspec>]]<pathspec>初始化并克隆子模块,如果没有指定<pathspec>则所有子模块都被初始化和克隆。对于有多个条目的<parhspec>可以多次给出此选项。git submodule update --init --recursive <pathspec>。[--[no-]shallow-submodules][--[no-]remote-submodules]--remote选项传递给git submodule update。[-j <n>, --jobs <n>]submodule.fetchJobs。[--sparse][--]<repository>https协议也可以是ssh协议或者git协议等等。[<directory>]-v, --verbose[-c <key>=<value>, --config <key>=<value]推荐学习:《Git教程》
以上就是实例详解git init和git clone获取git仓库的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号