この記事では、Git に関する関連知識を提供します。主に、既存の Git ストレージ データベースからの git clone を含む、git ウェアハウスを取得するための git init および git clone の関連問題について説明します。ローカル ディレクトリとその他の関連コンテンツが皆様のお役に立てれば幸いです。
# 推奨学習: 「Git チュートリアル 」
git init と git clone を使用して git ウェアハウスを取得する通常、Git リポジトリを取得するには 2 つの方法があります:git init [-q | --quiet] [--bare] [--template=<template_directory>] [--separate-git-dir <git dir>] [--shared[=<permissions>]] [directory]
objects、
refs/heads、
refs/tags、テンプレート ファイルが基本的に
.git# に作成されます。 ## ディレクトリ。 master ブランチの HEAD を参照する初期 HEAD ファイルも作成されます。
$GIT_DIR
環境変数が指定されている場合、リポジトリのベースとして ./.git
ディレクトリが置き換えられます。
objects
ディレクトリが $GIT_OBJECT_DIRECTORY
環境変数で指定されている場合、sha1 ディレクトリがこのディレクトリに作成されます。それ以外の場合は、デフォルトの $GIT_DIR/objects になります。 ### 目次。
既存の Git リポジトリで git init
を実行しても安全です。既存のものは上書きされません。
git init を再実行する主な理由は、新しく追加されたテンプレートを取得することです (または、
--dependent-git-dir オプションの場合は Git リポジトリを別の場所に移動するためです)。 。
.git
フォルダーを除いたベア ウェアハウスを作成します。
ストレージ データベースにコピーするために使用されます。指定しない場合、デフォルトのコピーは、パスの下の
/usr Templates です。 /share/git-core/templates$ ls /usr/share/git-core/templates/ branches description hooks info
テンプレートは順番に渡すことができます。 - -template=<DIR>
設定、$GIT_TEMPLATE_DIRinit.templateDir
構成設定、および下位レベルの設定を順番にオーバーライドします。
[--dependent-git-dir <git dir>]
は現在のディレクトリに
.git を作成します。 directory .git
ファイルをローカルに作成するためのパスを指定できます:
ローカルに
.git[--shared[=<permissions>]]
権限が設定されます。興味がある場合は、
git init --help
[ディレクトリ]
コマンドはこのディレクトリで実行され、実行される場合はディレクトリが作成されます。存在しない。 。
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 fetch コマンドはすべてのリモート追跡ブランチを更新でき、パラメータなしの
git pull
コマンドもリモート マスター ブランチをマージします。現在のブランチ。 このデフォルト設定は、
refs/remotes/origin にリモート ブランチ ヘッドへの参照を作成し、
remote.origin.url
と remote.origin を初期化することによって作成されます。 fetch
構成変数によって実装されます。 <ul>
<li>
<code>[--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
ファイルは、既存の代わりに、Git リポジトリでは、ソース リポジトリからコピーする必要のある オブジェクト
が少なくなるため、ネットワークとローカル ストレージのコストが削減されます。 --reference-if-able
を使用すると、存在しないディレクトリはスキップされ、クローン作成が中止される代わりに警告が発行されます。
--referenceobjects
オブジェクトを借用すると、ネットワーク送信が減少するだけです。クローン作成後に、借用した objects
の必要なローカル コピーを作成して、参照ライブラリからのオブジェクトの借用を停止します。ローカル クローンがすでに別のリポジトリから objects
を借用している場合、このオプションを使用して、新しいリポジトリが同じリポジトリから objects
を借用するのを停止できます。このオプションは主に Git サーバーにも使用されます。
このオプションの効果を得るには、
git init
クローンを作成する必要があるコミットの数を
< Depth>< Depth>
コミット数でローカルに複製されます。単純にサブモジュールのクローンを作成したい場合は、--shallow-submodules
オプションを渡すこともできます。
名前が示すように、
--single-branch
タグのクローンを作成せず、設定タグに
remote.git pull
と git fetch
がタグに対して動作しないようにします。
--single-branch
クローンの作成後、指定された
<pathspec>
が指定されていない場合、すべてのサブモジュールが初期化され、クローンが作成されます。このオプションは、複数のエントリを持つ <parhspec>
に対して複数回指定できます。 このオプションをデフォルトで使用することは、
git submodule update --init --recursive <pathspec>
クローン化されたすべてのサブモジュールの浅いクローンの深さは 1 です。
すべての複製されたサブモジュールのリモート追跡ブランチのステータスを更新して、Git データベースに記録する代わりにサブモジュールを更新します。 SHA1。
--remotegit submodule update
に渡すことと同じです。
同時にフェッチされるサブモジュールの数。デフォルトはconfiguration
submoduleです。 fetchJobs
スパース チェックアウト モード、いわゆるスパース チェックアウトとは、ローカル リポジトリをチェックアウトするときに、すべてをチェックアウトするのではなく、ローカル リポジトリから指定されたファイルがワークスペースにチェックアウトされますが、その他の指定されていないファイルはチェックアウトされません (これらのファイルがワークスペースに存在する場合でも、その変更は無視されます)。この機能については、ここでは詳しく説明しません。
には実際的な効果はなく、区別しやすくするためにオプションと操作オブジェクトを分離するだけです。
クローンを作成するウェアハウスは、リモート ウェアハウスまたはローカル ウェアハウスの場合があり、
https ssh
プロトコルまたは git
プロトコルなど。
このディレクトリを指定すると、Git リポジトリがこのディレクトリに複製されます。
クローン情報の詳細な出力。
リポジトリのクローン作成時に新しく作成した Git を保存します。ライブラリは構成変数を設定します。これはクローン作成の完了直後に有効になります
以上がgit ウェアハウスを取得するための git init および git clone の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。