我的编程空间,编程开发者的网络收藏夹
学习永远不晚

git init和git clone获取git仓库的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

git init和git clone获取git仓库的方法

这篇文章主要讲解了“git init和git clone获取git仓库的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“git init和git clone获取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目录中创建objectsrefs/headsrefs/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路径下的模板,里面包括如下内容:

    $ ls /usr/share/git-core/templates/branches  description  hooks  info

    如果指定自己默认路径则初始化的Git存储数据库如下: git init和git clone获取git仓库的方法
    其中模板依次可通过--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.urlremote.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 pullgit 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 init和git clone获取git仓库的方法”的内容了,经过本文的学习后,相信大家对git init和git clone获取git仓库的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

git init和git clone获取git仓库的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

git init和git clone获取git仓库的方法

这篇文章主要讲解了“git init和git clone获取git仓库的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“git init和git clone获取git仓库的方法”吧!使用g
2023-06-29

如何获取Git仓库

这篇文章主要介绍“如何获取Git仓库”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何获取Git仓库”文章能帮助大家解决问题。获取 Git 仓库您通常通过以下两种方式之一获取 Git 仓库:您可以将
2023-06-26

GIT仓库瘦身及GIT LFS迁移的方法是什么

这篇文章主要介绍“GIT仓库瘦身及GIT LFS迁移的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“GIT仓库瘦身及GIT LFS迁移的方法是什么”文章能帮助大家解决问题。背景之前一些gi
2023-06-26

git无法读取远程仓库怎么解决

如果你无法读取远程仓库,可以尝试以下几种解决方法:确认远程仓库的URL是否正确:可以使用git remote -v命令查看远程仓库的URL,确保URL正确无误。检查网络连接:确保你的网络连接正常,可以尝试使用其他网络或者重新连接网络。检查权
2023-10-20

git中怎么创建仓库?方法介绍

Git是目前最为流行的版本控制工具之一,为开发者们提供了快速便捷的代码管理方式。在现今的开发环境中,使用Git进行版本控制已经成为了一个基本要求。那么,在开发过程中如何创建Git仓库呢?本篇文章将给你详细介绍Git仓库的创建方法。在Gith
2023-10-22

git创建本地仓库的方法是什么

要创建一个本地仓库,可以按照以下步骤使用Git命令行工具:打开命令行终端(Command Prompt,Terminal等)。使用cd命令切换到要创建仓库的目录。例如,cd Documents/将切换到"Documents"目录。使用g
2023-10-20

Git获取本地仓库及基础操作指令总结

Git是一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统。本文为大家总结了一下Git获取本地仓库及基础操作指令,需要的可以参考一下
2022-11-13

Git仓库搭建及分支管理的方法

这篇文章主要讲解了“Git仓库搭建及分支管理的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Git仓库搭建及分支管理的方法”吧!1. Git是什么?Git是一款开源的分布式版本控制系统,
2023-06-29

如何查看Git仓库的提交数量(方法介绍)

近年来,随着软件开发的不断发展,源代码管理工具Git也越来越受到人们的青睐。Git可以提供代码版本控制、多人协作开发、代码分支管理等强大的功能,深受软件工程师们的喜爱。使用Git时,经常需要查看一些重要的信息,比如远程仓库的commit数,
2023-10-22

git-github子模块仓库更新及git中submodule子模块的添加、使用和删除方法是什么

这篇文章主要介绍“git-github子模块仓库更新及git中submodule子模块的添加、使用和删除方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“git-github子模块仓库更新及g
2023-07-05

在git中取消__pycache__文件的方法

_pycache__文件夹是Python编译器用来存放编译后的Python文件的,在项目中不需要提交这些文件,因为它们可以通过编译源代码重新生成,这篇文章主要介绍了如何在git中取消__pycache__文件,需要的朋友可以参考下
2023-01-29

取消git add命令的方法有哪些

本文小编为大家详细介绍“取消git add命令的方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“取消git add命令的方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。方法一:使用git res
2023-07-05

聊聊Git的使用方法和注意事项

作为程序员和开发人员必备的版本控制工具,Git已经成为了主流。但是,很多人在使用 Git 时常常会遇到一些问题,比如常见的 Git 命令不知道该如何使用、出现冲突怎么办等等。那么,本文就为大家介绍一下 Git 的使用方法和注意事项,帮助大家
2023-10-22

Git修改历史的方法和注意事项

Git是一款非常流行的分布式版本控制工具,它可以帮助我们管理代码的修改历史,并帮助我们协作开发和维护代码。在使用Git进行开发的过程中,我们时常需要修改代码的历史记录,比如修改提交信息、合并分支等。本文将介绍Git修改历史的方法和注意事项。
2023-10-22

重置本地git存储库的方法是什么

要重置本地git存储库,可以使用以下命令:重置所有更改并清除暂存区域:git reset --hard HEAD重置所有更改但保留在暂存区域:git reset --hard HEAD^重置到特定的提交ID:git reset --hard
重置本地git存储库的方法是什么
2024-04-09

Git服务安装和配置的方法是什么

本文小编为大家详细介绍“Git服务安装和配置的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Git服务安装和配置的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、Git服务是什么Git服务
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录