这篇文章主要讲解了“git init和git clone获取git仓库的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“git init和git clone获取git仓库的方法”吧!
创新互联专注于企业全网整合营销推广、网站重做改版、阳东网站定制设计、自适应品牌网站建设、HTML5、商城网站建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为阳东等各大城市提供网站开发制作服务。
使用git init和git clone获取git仓库
通常获取git仓库有两种方式:
- 将本地未进行版本控制的本地目录转换为Git仓库; 
- 从其他服务器上克隆一个已存在的Git仓库; 
1 git init 在本地目录上创建Git仓库
git init [-q | --quiet] [--bare] [--template=] [--separate-git-dir ] [--shared[= ]] [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=- ] 
 用于在初始化Git仓库时将模板文件夹中的文件拷贝到我们初始化时的- .git存储数据库中,如果不指定,默认拷贝的是- /usr/share/git-core/templates路径下的模板,里面包括如下内容:- $ ls /usr/share/git-core/templates/ branches description hooks info - 如果指定自己默认路径则初始化的Git存储数据库如下:  
 其中模板依次可通过- --template=设置,- $GIT_TEMPLATE_DIR环境变量设置,- init.templateDir配置设置,并且依次覆盖下一级设置。
- [--separate-git-dir- ] 
 默认- git init会在当前目录下创建一个- .git文件夹来储存Git数据库,此命令可指定一个路径来初始化Git存储数据库,并在本地创建一个- .git文件来链接到指定的目录中去:
 可以看到本地只有一个- .git文件,文件中描述了当前仓库的Git存储数据库具体位置在哪里,并自动链接过去。
- [--shared[=- ]] 
 用于指定创建的Git存储数据库的读写权限,包括同组用户,所有用户等等权限设置,如果没有指定默认是- group权限。感兴趣可以- git init --help查看此选项具体用法。
- [directory]
 如果指定了此选项,- git init命令则会在此目录中运行,如果目录不存在还会创建该目录。
2 git clone 从已有的Git存储数据库中克隆仓库到本地目录
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] [--] [ ] 
克隆一个仓库到新被创建的目录中,为克隆的Git存储库中每个分支创建远程跟踪分支(通过git branch --remotes可查看跟踪分支),并创建和检出克隆仓库当前活跃的分支到本地初始分支。
克隆完成后,一个不带参数的git fetch命令可以更新所有远程跟踪分支,并且不带参数的git pull命令还会将远程主分支合并到当前分支中。
这个默认配置是通过在refs/remotes/origin下创建对远程分支头的引用并且初始化remote.origin.url和remote.origin.fetch配置变量实现的。
- [--template=- ] 
 请看- git init相关选项获取此选项作用。
- [-l, --local]
 用于从本地Git存储仓库克隆Git存储数据库,此选项会拷贝本地的- 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的命令(- 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]
 克隆完成后不执行检出HEAD操作:
- [--bare]
 创建一个裸的Git仓库。也就是说不创建- /.git - /.git - .git - --no-checkout的,不会检出任何HEAD,也不会自动跟踪任何远程分支,也不会创建相关的配置变量。
- [--mirror]
 设置源Git存储库的镜像。类似于- --bare,对比- --bare,- --mirror不仅仅映射源的本地分支到目标的本地分支,它还映射所有引用(包括远程跟踪分支,笔记等),并设置refspec配置,以便所有这些引用都被目标存储库中的git远程更新覆盖。
 注意:- --bare和- --mirror都是针对服务器使用,因为服务器只需要保存Git存储数据库而不需要实际操作git命令,所以当你在这两个选项创建的存储库执行Git命令会得到下面的打印:- fatal: this operation must be run in a work tree 
- [-o- , --origin - ] 
 未使用此选项时默认使用origin来跟踪远程仓库,使用此选项后使用- [-b- , --branch - ] 
 不要将新创建的HEAD指向克隆仓库HEAD指向的分支,而是指向- [-u- , --upload-pack - ] 
 在使用ssh访问要克隆的Git存储库时,它为另一端运行的命令指定了一个非默认的路径。这个选项主要针对Git服务器使用,为服务器使用的git等指定了一个路径。一般是- /usr/bin/git-upload-pack,当服务器的git运行时会自动找到此路径的程序。
- [--reference[-if-able]- ] 
 如果引用的Git存储库在本地机器上,自动的会设置- .git/objects/info/alternates文件来从引用源存储库来获取- objects,使用已经存在的Git存储库作为替代将会需要更少的- objects被从源存储库拷贝过来,从而降低网络和本地存储成本。当使用- --reference-if-able时,会跳过不存在的目录,并发出警告,而不是中止克隆。
- [--dissociate]
 从- --reference引用的Git存储库借用- objects对象仅减少网络传输,并且在通过对借用- objects进行必要的本地复制来进行克隆后,停止从引用库中借用对象。当本地克隆已经从另一个存储库借用- objects时,可以使用此选项来停止新存储库从相同的存储库借用- objects。此选项也主要用于Git服务器。
- [--separate-git-dir- ] 
 请看- git init相关选项获取此选项作用。
- [--depth- ] 
 创建一个浅克隆,其需要克隆的提交数量由- --shallow-submodules选项。
- [--[no-]single-branch]
 顾名思义,- --single-branch只会克隆Git存储库中指定的一个分支,远程Git存储库中其他分支不会在本地被克隆下来,也不会在本地跟踪其他远程分支,只会跟踪单个远程分支。
- [--no-tags]
 不会克隆任何标签下来,并且在配置中设置- remote.,以确保后续- .tarOpt=--no-tags - git pull和- git fetch也不会操作到标签,除非显式的操作标签。
 可以与- --single-branch一起使用,以维护单个分支,在只维护某个缺省分支时很有用。
- [--recurse-submodules[=- ]] 
 克隆创建后,根据提供的
 使用默认的此选项,相当于运行- git submodule update --init --recursive。
- [--[no-]shallow-submodules]
 所有被克隆的子模块都浅克隆深度为1。
- [--[no-]remote-submodules]
 所有被克隆的子模块的远程跟踪分支的状态来更新子模块,而不是记录在Git数据库中的SHA1。相当于将- --remote选项传递给- git submodule update。
- [-j- , --jobs - ] 
 同时取出的子模块数,默认是配置- submodule.fetchJobs。
- [--sparse]
 稀疏检出模式,所谓稀疏检出就是本地版本库检出时不检出全部,只将指定的文件从本地版本库检出到工作区,而其他未指定的文件则不予检出(即使这些文件存在于工作区,其修改也会被忽略)。这里不详细介绍此功能。
- [--]
 无实际作用,只是为了将选项和操作对象分开以便易于区分。
 要克隆的仓库,可能是远程仓库,也可能是本地仓库,可以是- https协议也可以是- ssh协议或者- git协议等等。
- [- ] 
 如果指定了此目录,则会将Git仓库克隆到此目录中。
- -v, --verbose
 冗长输出克隆信息。
- [-c- = - , --config - = 
 在克隆仓库时为新创建的Git存储库设置一个配置变量,在克隆完成后立即生效
感谢各位的阅读,以上就是“git init和git clone获取git仓库的方法”的内容了,经过本文的学习后,相信大家对git init和git clone获取git仓库的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
本文名称:gitinit和gitclone获取git仓库的方法
标题链接:http://www.scyingshan.cn/article/igiosd.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 