实例详解git init和git clone获取git仓库
本篇文章给大家带来了关于Git的相关知识,其中主要介绍了git init和git clone获取git仓库的相关问题,包括了git clone 从已有的Git存储数据库中克隆仓库到本地目录等相关内容,希望对大家有帮助。
推荐学习:《Git教程》
使用git init和git clone获取git仓库
通常获取git仓库有两种方式:
将本地未进行版本控制的本地目录转换为Git仓库;
从其他服务器上克隆一个已存在的Git仓库;
1 git init 在本地目录上创建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仓库时将模板文件夹中的文件拷贝到我们初始化时的.git
存储数据库中,如果不指定,默认拷贝的是/usr/share/git-core/templates
路径下的模板,里面包括如下内容:如果指定自己默认路径则初始化的Git存储数据库如下:$ 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>]]
用于指定创建的Git存储数据库的读写权限,包括同组用户,所有用户等等权限设置,如果没有指定默认是group
权限。感兴趣可以git init --help
查看此选项具体用法。 -
[directory]
如果指定了此选项,git init
命令则会在此目录中运行,如果目录不存在还会创建该目录。
2 git clone 从已有的Git存储数据库中克隆仓库到本地目录
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]
用于从本地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仓库。也就是说不创建<directory>/.git
目录也不会将管理文件放到<directory>/.git
中,而是为自己创建一个<directory>
或者<directory>.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 <name>, --origin <name>]
未使用此选项时默认使用origin来跟踪远程仓库,使用此选项后使用<name>
来跟踪远程仓库。 -
[-b <name>, --branch <name>]
不要将新创建的HEAD指向克隆仓库HEAD指向的分支,而是指向<name>
分支。 -
[-u <upload-pack>, --upload-pack <upload-pack>]
在使用ssh访问要克隆的Git存储库时,它为另一端运行的命令指定了一个非默认的路径。这个选项主要针对Git服务器使用,为服务器使用的git等指定了一个路径。一般是/usr/bin/git-upload-pack
,当服务器的git运行时会自动找到此路径的程序。 -
[--reference[-if-able] <repository>]
如果引用的Git存储库在本地机器上,自动的会设置.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]
所有被克隆的子模块都浅克隆深度为1。 -
[--[no-]remote-submodules]
所有被克隆的子模块的远程跟踪分支的状态来更新子模块,而不是记录在Git数据库中的SHA1。相当于将--remote
选项传递给git submodule update
。 -
[-j <n>, --jobs <n>]
同时取出的子模块数,默认是配置submodule.fetchJobs
。 -
[--sparse]
稀疏检出模式,所谓稀疏检出就是本地版本库检出时不检出全部,只将指定的文件从本地版本库检出到工作区,而其他未指定的文件则不予检出(即使这些文件存在于工作区,其修改也会被忽略)。这里不详细介绍此功能。 -
[--]
无实际作用,只是为了将选项和操作对象分开以便易于区分。 -
<repository>
要克隆的仓库,可能是远程仓库,也可能是本地仓库,可以是https
协议也可以是ssh
协议或者git
协议等等。 -
[<directory>]
如果指定了此目录,则会将Git仓库克隆到此目录中。 -
-v, --verbose
冗长输出克隆信息。 -
[-c <key>=<value>, --config <key>=<value]
在克隆仓库时为新创建的Git存储库设置一个配置变量,在克隆完成后立即生效
推荐学习:《Git教程》
以上是实例详解git init和git clone获取git仓库的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

DeepSeek的安装方法有多种,包括:从源码编译(适用于经验丰富的开发者)使用预编译包(适用于Windows用户)使用Docker容器(最便捷,无需担心兼容性)无论选择哪种方法,请仔细阅读官方文档并充分准备,避免不必要的麻烦。

DeepSeekAI工具使用指南及常见问题解答DeepSeek是一款功能强大的AI智能工具,本文将解答一些常见的使用问题,助您快速上手。常见问题解答:不同访问方式的区别:网页版、App版和API调用在功能上没有区别,App只是网页版的封装。本地部署使用的是蒸馏模型,能力略逊于完整版DeepSeek-R1,但32位模型理论上拥有90%的完整版能力。酒馆(SillyTavern)是什么?SillyTavern是一个前端界面,需要通过API或Ollama调用AI模型。破限是什么

注册LBank访问官方网站并点击“注册”。输入电子邮件和密码并验证邮箱。下载LBank应用程序iOS:在AppStore中搜索“LBank”。下载并安装“LBank-DigitalAssetExchange”应用。Android:在GooglePlay商店中搜索“LBank”。下载并安装“LBank-DigitalAssetExchange”应用。

火币网合约爆仓是保证金不足导致的强制平仓。为了避免爆仓,保证金比例建议:主流币种合约不低于10%,非主流币种合约不低于20%。保证金计算公式:爆仓所需保证金=合约价值/(1-止损率/开仓价格)。高保证金比例有助于降低爆仓风险。合约交易杠杆倍数高,收益与风险并存,需谨慎管理保证金。

灰度投资:机构投资者进入加密货币市场的通道灰度投资公司为机构和投资者提供数字货币投资服务,其通过信托基金形式,让投资者间接参与加密货币投资。该公司已推出多个加密信托基金,引发市场广泛关注,但这些基金对代币价格的影响却差异显着。本文将详细介绍灰度旗下部分主要的加密信托基金。灰度主要加密信托基金一览灰度投资(由DigitalCurrencyGroup于2013年创立)旗下管理着多种加密资产信托基金,为机构投资者和高净值人士提供合规的加密货币投资途径。其主要基金包括:Zcash(ZEC)、SOL、

ElizaOSv2:赋能AI,引领Web3新经济AI正从辅助工具进化为独立实体,ElizaOSv2在其中扮演着关键角色,它赋予AI管理资金和运营Web3业务的能力。本文将深入探讨ElizaOSv2的关键创新,以及它如何塑造AI驱动的未来经济。 AI自主化:走向独立运营ElizaOS最初是一个专注于Web3自动化的AI框架。 v1版本允许AI与智能合约和区块链数据交互,而v2版本则实现了显着的性能提升。 AI不再仅仅执行简单指令,而是能够独立管理工作流程、运营业务并制定财务策略。架构升级:增强A

顶级做市商城堡证券入局比特币做市,是比特币市场成熟化的标志,也是传统金融势力争夺未来资产定价权的关键一步,同时对散户而言,可能意味着话语权的逐步减弱。2月25日,据彭博社报道,城堡证券(CitadelSecurities)正在寻求成为加密货币的流动性提供商。知情人士称,该公司的目标是加入各个交易所的做市商名单,其中包括CoinbaseGlobal、BinanceHoldings和Crypto.com运营的交易所。一旦获得交易所批准,该公司最初计划在美国境外成立做市团队。这一举动不仅标志
