Heim > Artikel > Entwicklungswerkzeuge > Detaillierte Beispiele für Git Init und Git Clone, um Git Warehouse zu erhalten
Dieser Artikel vermittelt Ihnen relevantes Wissen über Git, in dem hauptsächlich die verwandten Probleme von Git Init und Git Clone zum Erhalten von Git Warehouse vorgestellt werden, einschließlich Git Clone, das das Warehouse aus der vorhandenen Git-Speicherdatenbank in das lokale Verzeichnis klont. Warten auf verwandte Inhalte, Ich hoffe, es wird für alle hilfreich sein.
Empfohlenes Lernen: „Git-Tutorial“
Es gibt normalerweise zwei Möglichkeiten, das Git-Repository abzurufen:
Konvertieren Sie ein lokales Verzeichnis nicht unter Versionskontrolle Für Git-Repository;
Ein vorhandenes Git-Repository von anderen Servern klonen;
git init [-q | --quiet] [--bare] [--template=<template_directory>] [--separate-git-dir <git dir>] [--shared[=<permissions>]] [directory]
Dieser Befehl erstellt eine leere Git-Speicherdatenbank. Grundsätzlich werden objects
, refs/heads
, refs/tags
und Vorlagendateien im Verzeichnis .git
erstellt . Außerdem wird eine anfängliche HEAD-Datei erstellt, die auf den HEAD des Hauptzweigs verweist.
Wenn die Umgebungsvariable $GIT_DIR
angegeben ist, wird das Verzeichnis ./.git
als Basis für ein Repository verwendet.
Wenn das Verzeichnis objects
über die Umgebungsvariable $GIT_OBJECT_DIRECTORY
angegeben wird, wird das Verzeichnis sha1 in diesem Verzeichnis erstellt, andernfalls ist es das Standardverzeichnis $ GIT_DIR/objects
Verzeichnis.
Es ist sicher, git init
auf einem vorhandenen Git-Repository auszuführen. Dabei werden vorhandene Inhalte nicht überschrieben. Der Hauptgrund für die erneute Ausführung von git init
besteht darin, die neu hinzugefügten Vorlagen abzurufen (oder im Fall der Option --separate-git-dir
das Git zu verschieben Repository an einen anderen Ort verschieben). .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如果指定自己默认路径则初始化的Git存储数据库如下:
--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
[-q, --quite]
[--bare]
.git
:[--template=<template_directory>]
.git
kopiert. Wenn nicht angegeben, erfolgt die Standardkopie nach /usr/share/git-core/templates-Pfad. Vorlage, die den folgenden Inhalt enthält: fatal: this operation must be run in a work tree
Wenn Sie Ihren eigenen Standardpfad angeben, lautet die initialisierte Git-Speicherdatenbank wie folgt:
Die Vorlage kann über --template=<DIR>
, $GIT_TEMPLATE_DIR
Umgebungsvariableneinstellungen, init.templateDir
Konfigurationseinstellungen und überschreiben nacheinander Einstellungen auf niedrigerer Ebene. 🎜🎜[--separate-git-dir <git dir>]
git init
eine .git-Ordner zum Speichern der Git-Datenbank. Dieser Befehl kann einen Pfad zum Initialisieren der Git-Speicherdatenbank angeben und lokal eine <code>.git
-Datei erstellen, um eine Verknüpfung zum angegebenen Verzeichnis herzustellen:.git
-Datei, die den spezifischen Speicherort der Git-Speicherdatenbank des aktuellen Warehouses beschreibt und automatisch darauf verweist. 🎜🎜[--shared[=<permissions>]]
group
. Wenn Sie interessiert sind, können Sie git init --help
verwenden, um die spezifische Verwendung dieser Option anzuzeigen. 🎜🎜[directory]
git init
in diesem Verzeichnis ausgeführt, andernfalls wird das Verzeichnis erstellt existieren. 🎜🎜🎜🎜2 Git-Klon Klonen Sie das Repository aus der vorhandenen Git-Repository-Datenbank in ein lokales Verzeichnis. 🎜🎜rrreee🎜Klonen Sie ein Repository in das neu erstellte Verzeichnis und erstellen Sie Remote-Tracking-Zweige für jeden Zweig im geklonten Git-Repository (Sie können die Nachverfolgung anzeigen verzweigt sich über git branch --remotes
) und erstellt und checkt den aktuell aktiven Zweig des geklonten Warehouses in den lokalen ursprünglichen Zweig aus. git fetch
-Befehl ohne Parameter alle Remote-Tracking-Zweige aktualisieren, und ein git pull
-Befehl ohne Parameter aktualisiert auch den Remote-Master. Der Zweig wird mit dem aktuellen Zweig zusammengeführt. refs/remotes/origin
ein Verweis auf den Remote-Branch-Header erstellt und remote.origin.url
und remote initialisiert werden . Origin.fetch
wird durch Konfigurationsvariablen implementiert. 🎜[--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]
Empfohlenes Lernen: „ Git-Tutorial 》
Das obige ist der detaillierte Inhalt vonDetaillierte Beispiele für Git Init und Git Clone, um Git Warehouse zu erhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!