git clone完整使用手册

git-clone - 将一个仓库克隆到一个新目录中

用法

git clone [--template=<模板目录>][-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror][-o <名称>] [-b <名称>] [-u <上传包>] [--reference <仓库>][--dissociate] [--separate-git-dir <git目录>][--depth <深度>] [--[no-]single-branch] [--no-tags][--recurse-submodules[=<路径模式>]] [--[no-]shallow-submodules][--[no-]remote-submodules] [--jobs <n>] [--sparse] [--[no-]reject-shallow][--filter=<过滤器> [--also-filter-submodules]] [--] <仓库>[<目录>]

描述

将一个仓库克隆到一个新创建的目录中,为克隆的仓库中的每个分支创建远程跟踪分支(可通过git branch --remotes查看),并创建并检出一个从克隆仓库的当前活动分支派生的初始分支。

克隆完成后,一个没有参数的git fetch命令将更新所有远程跟踪分支,而一个没有参数的git pull命令还会将远程主分支合并到当前的主分支(如果指定了--single-branch,这不适用;参见下文)。

这种默认配置是通过在refs/remotes/origin下创建指向远程分支头的引用,并初始化remote.origin.urlremote.origin.fetch配置变量来实现的。

选项

-l, --local

当克隆的仓库位于本地机器上时,该标志绕过常规的“Git感知”传输机制,通过复制HEADobjectsrefs目录下的所有内容来克隆仓库。
如果仓库指定为本地路径(如/path/to/repo),这是默认行为,--local实质上没有作用。如果仓库是一个URL,则忽略此标志(并且不会使用本地优化)。
如果仓库的$GIT_DIR/objects包含符号链接或本身是符号链接,克隆将失败。此操作可防止通过解引用符号链接意外复制文件。

--no-hardlinks

强制在本地文件系统上从仓库克隆时复制.git/objects目录下的文件,而不是使用硬链接。适用于需要备份仓库的情况。

-s, --shared

克隆时共享对象而不复制,结果仓库不会包含自己的对象。此操作有风险,可能导致数据丢失,建议谨慎使用。

--reference[-if-able] <仓库>

使用本地参考仓库共享对象,减少网络和存储消耗。

--dissociate

在克隆完成后停止借用参考仓库的对象,必要时复制借用的对象到本地。

-q, --quiet

静默操作,不输出进度。

-v, --verbose

详细输出。

--progress

强制显示进度状态。

-n, --no-checkout

克隆完成后不检出HEAD

--bare

创建裸仓库,$GIT_DIR<目录>本身,且不会检出工作树。

--mirror

设置镜像仓库,包含所有引用,并配置同步更新。

-o <名称>, --origin <名称>

自定义远程仓库名称,默认为origin

-b <名称>, --branch <名称>

指定要检出的分支,或通过标签指定某个提交。

--depth <深度>

创建一个浅克隆,历史记录被截断为指定的提交数。
 

--shallow-since=<date>

创建一个浅克隆仓库,包含从指定时间点之后的历史记录。这可以减少克隆时拉取的提交数量。

--shallow-exclude=<revision>

创建一个浅克隆仓库,排除从指定远程分支或标签开始的提交记录。可以多次指定该选项以排除多个修订点的提交。

--[no-]single-branch

仅克隆指定分支(通过 --branch 选项指定,或默认指向远程仓库的主分支)的历史记录。此选项生成的仓库在后续获取更新时,仅更新该分支的远程跟踪分支。如果远程的 HEAD 不指向任何分支,则不会创建远程跟踪分支。

--no-tags

不克隆任何标签,并在配置中设置 remote.<remote>.tagOpt=--no-tags,确保后续的 git pullgit fetch 操作不会跟随任何标签。后续的显式标签获取仍然有效(详见 git-fetch(1))。此选项可以与 --single-branch 一起使用,以克隆并维护一个不包含其他引用的最小化分支仓库。这对于某些仓库的默认分支的搜索索引等用途非常有用。

--recurse-submodules[=<pathspec>]

在克隆完成后,初始化并克隆基于提供的 pathspec 的子模块。如果未提供 pathspec,则初始化并克隆所有子模块。该选项可多次使用以包含多个 pathspec。生成的克隆仓库的 submodule.active 配置为提供的 pathspec,如果没有提供则为 .(表示所有子模块)。

子模块会使用其默认设置初始化和克隆,等效于在克隆完成后立即运行 git submodule update --init --recursive <pathspec>。如果克隆的仓库没有工作区(即使用 --no-checkout/-n--bare--mirror 选项),则忽略此选项。

--[no-]shallow-submodules

将克隆的所有子模块设置为浅克隆,深度为 1。

--[no-]remote-submodules

所有克隆的子模块将使用子模块的远程跟踪分支状态进行更新,而非项目的记录 SHA-1。等效于向 git submodule update 传递 --remote

--separate-git-dir=<git-dir>

将克隆的仓库放置在指定的目录中,而不是默认位置,并在目标位置创建指向该目录的文件系统无关 Git 符号链接。这样可以将 Git 仓库与工作树分离。

-j <n> / --jobs <n>

同时获取的子模块数量。默认值由 submodule.fetchJobs 配置选项决定。

<repository>

指定要克隆的仓库(可能是远程仓库)。有关指定仓库的更多信息,参见 GIT URLS 部分。

<directory>

指定要克隆到的新目录名称。如果未显式指定目录,则使用源仓库的 "humanish" 部分作为默认名称(例如 /path/to/repo.git 的名称为 repohost.xz:foo/.git 的名称为 foo)。仅允许克隆到空目录中。

--bundle-uri=<uri>

在从远程仓库获取数据之前,从指定的 <uri> 获取一个 bundle,并将数据解压到本地仓库中。bundle 中的引用将存储在隐藏的 refs/bundle/* 命名空间中。此选项与 --depth--shallow-since--shallow-exclude 选项不兼容。

GIT URLS

通常情况下,URL 包含有关传输协议、远程服务器地址以及仓库路径的信息。根据传输协议的不同,某些信息可能会缺失。

Git 支持 ssh、git、http 和 https 协议(此外,也可以使用 ftp 和 ftps 来获取内容,但它们效率低下,已经被弃用;请不要使用它们)。

原生的传输方式(即 git:// URL)不进行身份验证,因此在不安全的网络环境中应谨慎使用。

以下语法可以与这些协议一起使用:

ssh://[user@]host.xz[:port]/path/to/repo.git/
git://host.xz[:port]/path/to/repo.git/
http[s]://host.xz[:port]/path/to/repo.git/
ftp[s]://host.xz[:port]/path/to/repo.git/

对于 ssh 协议,还可以使用类似 scp 的替代语法:

[user@]host.xz:path/to/repo.git/

此语法仅在第一个冒号前没有斜杠时才被识别。这有助于区分包含冒号的本地路径。例如,本地路径 foo:bar 可以指定为绝对路径或 ./foo:bar,以避免被误认为是 ssh URL。

ssh 和 git 协议还支持 ~username 扩展:

ssh://[user@]host.xz[:port]/~[user]/path/to/repo.git/
git://host.xz[:port]/~[user]/path/to/repo.git/
[user@]host.xz:/~[user]/path/to/repo.git/

对于 Git 原生支持的本地仓库,可以使用以下语法:

/path/to/repo.git/ 
file:///path/to/repo.git/

这两种语法基本等效,除了前者隐含了 --local 选项。

git clonegit fetchgit pull 命令也接受合适的 bundle 文件。参见 git-bundle(1)

当 Git 不知道如何处理某个传输协议时,它会尝试使用 remote-<transport> 远程助手(如果存在)。要明确请求远程助手,可以使用以下语法:

<transport>::<address>

其中 <address> 可以是路径、服务器和路径或被特定远程助手识别的任意类似 URL 的字符串。详情请参阅 gitremote-helpers(7)

如果有大量同名的远程仓库,且希望为它们使用不同的 URL 格式(即,您使用的 URL 会被重写为可用的 URL),您可以创建如下形式的配置部分:

[url "<actual url base>"] insteadOf = <other url base>

例如,配置如下:

[url "git://git.host.xz/"]insteadOf = host.xz:/path/to/insteadOf = work:

此时,像 work:repo.githost.xz:/path/to/repo.git 这样的 URL 将会在任何使用 URL 的上下文中被重写为 git://git.host.xz/repo.git

如果您仅希望重写用于推送的 URL,可以创建如下形式的配置部分:

[url "<actual url base>"]pushInsteadOf = <other url base>

例如,配置如下:

[url "ssh://example.org/"]pushInsteadOf = git://example.org/

此时,像 git://example.org/path/to/repo.git 这样的 URL 将会在推送时被重写为 ssh://example.org/path/to/repo.git,但拉取时仍会使用原始 URL。

EXAMPLES 示例

从上游克隆:

$ git clone git://git.kernel.org/pub/scm/.../linux.git my-linux
$ cd my-linux
$ make

借助当前目录进行本地克隆,但不检查任何内容:

$ git clone -l -s -n . ../copy
$ cd ../copy
$ git show-branch

从上游克隆,同时借用现有的本地目录:

$ git clone --reference /git/linux.git \git://git.kernel.org/pub/scm/.../linux.git \my-linux
$ cd my-linux

创建一个裸仓库,用于将您的更改发布到公共场所:

$ git clone --bare -l /home/proj/.git /pub/scm/proj.git

CONFIGURATION 配置

从本节起,以下内容是从 git-config(1) 文档中选择性引用的。内容与 git-config(1) 文档中相同:

  • init.templateDir:指定将从哪个目录复制模板。(参见 git-init(1) 中的 "TEMPLATE DIRECTORY" 部分)
  • init.defaultBranch:允许覆盖默认分支名称,例如在初始化新仓库时。
  • clone.defaultRemoteName:克隆仓库时创建的远程仓库名称。默认为 origin,可以通过传递 --origin 命令行选项覆盖。
  • clone.rejectShallow:拒绝克隆一个浅仓库,可以通过命令行中的 --reject-shallow 选项覆盖。参见 git-clone(1)
  • clone.filterSubmodules:如果提供了部分克隆过滤器(参见 git-rev-list(1) 中的 --filter),并且使用了 --recurse-submodules,则也将过滤器应用于子模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/57997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python多线程处理xlsx,多进程访问接口

import pandas as pd from concurrent.futures import ThreadPoolExecutor# 读取Excel文件 file_path scence.xlsx df pd.read_excel(file_path)# 定义每10行处理逻辑 def process_rows(start_idx):end_idx min(start_idx 10, len(df)) # 处理每10行for i in range(start_…

【Linux系统】进程终止

一、进程退出方式 1、正常终止 主要两种类型&#xff1a;从 main 返回、调用 exit 和 _exit 具体讲解如下&#xff1a; &#xff08;1&#xff09;从 main 返回 这个的使用就不用多说了吧&#xff0c;相信你们已经烂熟于心了 作用&#xff1a;return 语句用于从函数中返回…

一篇文章了解RocketMQ基础知识。

目录 一. 为什么选择了 RocketMQ &#xff1f; 二. RocketMQ 介绍 名词说明 1. Topic (主题) 1.1 Topic 核心作用 1.2 Topic 常见问题 2. Tag (标签) 3. Queue (队列) 3.1 Queue 读写队列 4. Message &#xff08;消息&#xff09; 4.1 Message 类型 5. Produ…

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解

在科技日新月异的今天&#xff0c;视频监控系统作为现代社会的“第三只眼”&#xff0c;正以前所未有的方式深刻影响着我们的生活与社会结构。从公共场所的安全监控到个人生活的记录分享&#xff0c;视频监控系统以其独特的视角和功能&#xff0c;为社会带来了诸多好处&#xf…

day10:ssh服务-跳板机

一&#xff0c;ssh服务概述 ssh服务概述 ssh&#xff08;Secure Shell&#xff09;是一种用于在不安全网络中进行安全登录、远程执行命令及传输文件的网络协议。它通过加密技术来保证通信的保密性和完整性&#xff0c;主要用于替代不安全的telnet、rlogin、rsh等协议。ssh通常…

python爬虫实战案例——抓取B站视频,不同清晰度抓取,实现音视频合并,超详细!(内含完整代码)

文章目录 1、任务目标2、网页分析3、代码编写 1、任务目标 目标网站&#xff1a;B站视频&#xff08;https://www.bilibili.com/video/BV1se41117WP/?vd_sourcee8e376ccbc5aa4cfd88e6a7917adfd1a&#xff09;&#xff0c;用于本文测验 要求&#xff1a;抓取该网址下的视频&…

【制造业&电子产品】电脑电子元件检测系统源码&数据集全套:改进yolo11-TADDH

改进yolo11-SCConv等200全套创新点大全&#xff1a;电脑电子元件检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.24 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者…

Linux: network: wireshark IO图的一个问题

今天遇到一个问题&#xff0c;发现wireshark画的IO图&#xff0c;前几秒没有数据&#xff0c;但是根据Raw的pcap看&#xff0c;是有包的&#xff0c;这就迷惑了。 经同事提醒&#xff0c;这个IO在设置了多个画图filter的时候&#xff0c;可能导致开始前几秒没有输出。如下图 这…

jenkins ssh 免密报错Host key verification failed.

jenkins 发布项目&#xff0c;ssh连接远程服务器时报错&#xff1a;Host key verification failed. 解决&#xff1a; 原因是生成的sshkey不是用的jenkins用户&#xff0c;所以切换用户到&#xff1a;jenkins重新生成sshkey su jenkins ssh-keygen -t rsa ssh-copy-id -i ~/…

C# 串口通信教程

串口通信&#xff08;Serial Communication&#xff09;是一种用于设备之间数据传输的常见方法&#xff0c;通常用于与外部硬件设备&#xff08;如传感器、机器人、微控制器&#xff09;进行通信。在 C# 中&#xff0c;System.IO.Ports 命名空间提供了与串口设备交互的功能&…

mono源码交叉编译 linux arm arm64全过程

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

GPT-4o 和 GPT-4 Turbo 模型之间的对比

GPT-4o 和 GPT-4 Turbo 之间的对比 备注 要弄 AI &#xff0c;不同模型之间的对比就比较重要。 GPT-4o 是 GPT-4 Turbo 的升级版本&#xff0c;能够提供比 GPT-4 Turbo 更多的内容和信息&#xff0c;但成功相对来说更高一些。 第三方引用 在 2024 年 5 月 13 日&#xff0…

8.MySQL复合查询

目录 复合查询基本查询回顾多表查询 - 笛卡尔积自连接子查询单行子查询多行子查询多列子查询在from中使用子查询 合并查询unionunion all 表的内连和外连内连接外连接左外连接右外连接 复合查询 前面我们讲解的mysql表的查询都是对一张表进行查询&#xff0c;在实际开发中这远远…

HTML+JavaScript案例分享: 打造经典俄罗斯方块,详解实现全过程

在本文中,我们将深入探讨如何使用 JavaScript 实现经典的俄罗斯方块游戏。俄罗斯方块是一款广为人知的益智游戏,通过操纵各种形状的方块,使其在游戏区域内排列整齐,以消除完整的行来获得分数。 效果图如下: 一、游戏界面与布局 我们首先使用 HTML 和 CSS 来创建游戏的界面…

java智能物流管理系统源码(springboot)

项目简介 智能物流管理系统实现了以下功能&#xff1a; 智能物流管理系统的主要使用者分为管理员&#xff0c;顾客&#xff0c;员工&#xff0c;店主。功能有个人中心&#xff0c;顾客管理&#xff0c;员工管理&#xff0c;店主管理&#xff0c;门店信息管理&#xff0c;门店…

查看Chrome安装路

谷歌Google浏览器查看安装路径&#xff0c;浏览器Google Chrome浏览器查看安装路径 chrome://version/ 来源&#xff1a;笔记云

idea安装visualVm插件

idea 安装visualVM插件用于分析java程序&#xff0c; 1.在插件市场安装visualvm launcher 2.安装成功后&#xff0c;重启idea&#xff0c;此时启动按钮旁边有这两个按钮 3.需要在这里配置插件的visualvm位置 4.配置完后&#xff0c;点击启动

已解决 django.db.utils.OperationalError: (1051, “Unknown table

报错信息&#xff1a; django.db.utils.OperationalError: (1051, "Unknown table bjybolg.tool_submission")python manage.py migrate --fake 命令用于告诉 Django 假装已经应用某个迁移&#xff0c;而不实际执行该迁移的操作。这通常在以下情况下非常有用&#x…

Layout 布局组件快速搭建

文章目录 设置主题样式变量封装公共布局组件封装 Logo 组件封装 Menu 菜单组件封装 Breadcrumb 面包屑组件封装 TabBar 标签栏组件封装 Main 内容区组件封装 Footer 底部组件封装 Theme 主题组件 经典布局水平布局响应式布局搭建 Layout 布局组件添加 Layout 路由配置启动项目 …

Linux: Shell编程入门

Shell 编程入门 1 ) Shell 概念 shell 是 在英语中 壳, 外壳的意思可以把它想象成嵌入在linux这样的操作系统里面的一个微型的编程语言不像C语言, C 或 Java 等编程语言那么完整&#xff0c;它可以帮我们完成很多自动化任务例如保存数据监测系统的负载等等&#xff0c;我们同样…