ホームページ  >  記事  >  開発ツール  >  git ウェアハウスを取得するための git init および git clone の詳細な例

git ウェアハウスを取得するための git init および git clone の詳細な例

WBOY
WBOY転載
2022-04-02 13:18:293601ブラウズ

この記事では、Git に関する関連知識を提供します。主に、既存の Git ストレージ データベースからの git clone を含む、git ウェアハウスを取得するための git init および git clone の関連問題について説明します。ローカル ディレクトリとその他の関連コンテンツが皆様のお役に立てれば幸いです。

git ウェアハウスを取得するための git init および git clone の詳細な例

# 推奨学習: 「

Git チュートリアル

git init と git clone を使用して git ウェアハウスを取得する

通常、Git リポジトリを取得するには 2 つの方法があります:

  • バージョン管理されていないローカル ディレクトリを Git リポジトリに変換します。

  • # # 他のサーバーから既存の Git リポジトリのクローンを作成します;

1 git init はローカル ディレクトリに Git リポジトリを作成します
git init [-q | --quiet] [--bare] [--template=<template_directory>]
           [--separate-git-dir <git dir>]
           [--shared[=<permissions>]] [directory]

このコマンドは、空の Git データベースを保存するには、

objectsrefs/headsrefs/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 リポジトリを別の場所に移動するためです)。 。

[-q, --quite]
  • エラー メッセージと警告メッセージのみを出力します;
    [--bare]
  • 次のように、.git フォルダーを除いたベア ウェアハウスを作成します。

    ##[--template=]git init --bare
  • は、Git ウェアハウスを初期化するときに、テンプレート フォルダー内のファイルを
  • .git ストレージ データベースにコピーするために使用されます。指定しない場合、デフォルトのコピーは、パスの下の /usr Templates です。 /share/git-core/templates
    、これには次の内容が含まれます:
    $ ls /usr/share/git-core/templates/
    branches  description  hooks  info
    独自のデフォルトのパスを指定すると、初期化された Git ストレージ データベースは次のようになります: テンプレートは順番に渡すことができます。 - -template=<DIR> 設定、git init --template$GIT_TEMPLATE_DIR
    環境変数設定、init.templateDir 構成設定、および下位レベルの設定を順番にオーバーライドします。 [--dependent-git-dir <git dir>]
  • デフォルトでは、
  • git init は現在のディレクトリに .git を作成します。 directory
    Git データベースを保存するフォルダー。このコマンドでは、Git ストレージ データベースを初期化し、指定されたディレクトリにリンクする .git ファイルをローカルに作成するためのパスを指定できます: ローカルに .git
    ファイルが 1 つだけあることがわかります。このファイルは、現在のウェアハウスの Git ストレージ データベースの特定の場所を記述しており、自動的にそれにリンクされます。 git init --separate
    [--shared[=<permissions>]]
  • 作成された Git ストレージ データベースの読み取りおよび書き込み権限 (同じグループ内のユーザーの権限を含む) を指定するために使用されます。 、すべてのユーザーなど。設定が指定されていない場合、デフォルトで
  • group 権限が設定されます。興味がある場合は、git init --help
    を実行して、このオプションの具体的な使用方法を確認してください。 [ディレクトリ]
  • このオプションが指定されている場合、
  • 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 ブランチ --remotes を通じて表示できます)、クローン化されたリポジトリの現在アクティブなブランチを作成してローカルの初期ブランチにチェックアウトします。

クローン作成が完了した後、パラメータなしの

git fetch コマンドはすべてのリモート追跡ブランチを更新でき、パラメータなしの git pull
コマンドもリモート マスター ブランチをマージします。現在のブランチ。 このデフォルト設定は、refs/remotes/origin にリモート ブランチ ヘッドへの参照を作成し、remote.origin.url
remote.origin を初期化することによって作成されます。 fetch 構成変数によって実装されます。 <ul> <li> <code>[--template=<template_directory>]
请看git init相关选项获取此选项作用。

  • [-l, --local]
    用于从本地Git存储仓库克隆Git存储数据库,此选项会拷贝本地的refs,HEAD等信息到克隆的Git存储数据库,并将.git/objects通过硬链接形式链接到本地Git存储库以节约本地空间。
    如果未指定-l选项但[url]是本地路径则还是会默认进行-l选项的行为,但是如果指定的是--no-local选项对本地仓库进行克隆则会走默认的git clone流程:
    git clone --no-local
  • [-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操作:
    git clone -n
  • [--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 ファイルは、既存の代わりに、Git リポジトリでは、ソース リポジトリからコピーする必要のある オブジェクト が少なくなるため、ネットワークとローカル ストレージのコストが削減されます。 --reference-if-able を使用すると、存在しないディレクトリはスキップされ、クローン作成が中止される代わりに警告が発行されます。
  • [--dissociate]
  • --reference
    によって参照される Git リポジトリから objects オブジェクトを借用すると、ネットワーク送信が減少するだけです。クローン作成後に、借用した objects の必要なローカル コピーを作成して、参照ライブラリからのオブジェクトの借用を停止します。ローカル クローンがすでに別のリポジトリから objects を借用している場合、このオプションを使用して、新しいリポジトリが同じリポジトリから objects を借用するのを停止できます。このオプションは主に Git サーバーにも使用されます。
  • [-- Separate-git-dir ]
  • このオプションの効果を得るには、git init
    関連オプションを参照してください。
  • [-- Depth < Depth>]
  • クローンを作成する必要があるコミットの数を < Depth>
    で指定して浅いクローンを作成します。 、および取得 すべてのブランチの上位コミットが、< Depth> コミット数でローカルに複製されます。単純にサブモジュールのクローンを作成したい場合は、--shallow-submodules オプションを渡すこともできます。
  • [--[no-]single-branch]
  • 名前が示すように、--single-branch
    は指定されたブランチのみをクローンします。 Git リポジトリ 、リモート Git リポジトリ内の他のブランチはローカルに複製されず、他のリモート ブランチもローカルに追跡されず、単一のリモート ブランチのみが追跡されます。
  • [--no-tags]
  • タグのクローンを作成せず、設定タグに remote..tarOpt=--no- を設定します
    タグが明示的に操作されない限り、後続の git pullgit fetch がタグに対して動作しないようにします。 --single-branch
    とともに使用すると、単一のブランチを維持できます。これは、特定のデフォルト ブランチのみを維持する場合に便利です。
  • [--recurse-submodules[=<pathspec>]]
  • クローンの作成後、指定された モジュール。<pathspec> が指定されていない場合、すべてのサブモジュールが初期化され、クローンが作成されます。このオプションは、複数のエントリを持つ <parhspec> に対して複数回指定できます。 このオプションをデフォルトで使用することは、git submodule update --init --recursive <pathspec>
    を実行することと同じです。
  • [--[no-]shallow-submodules]
  • クローン化されたすべてのサブモジュールの浅いクローンの深さは 1 です。
  • [--[no-]remote-submodules]
  • すべての複製されたサブモジュールのリモート追跡ブランチのステータスを更新して、Git データベースに記録する代わりにサブモジュールを更新します。 SHA1。 --remote
    オプションを git submodule update に渡すことと同じです。
  • [-j , --jobs ]
  • 同時にフェッチされるサブモジュールの数。デフォルトはconfigurationsubmoduleです。 fetchJobs
  • [--sparse]
  • スパース チェックアウト モード、いわゆるスパース チェックアウトとは、ローカル リポジトリをチェックアウトするときに、すべてをチェックアウトするのではなく、ローカル リポジトリから指定されたファイルがワークスペースにチェックアウトされますが、その他の指定されていないファイルはチェックアウトされません (これらのファイルがワークスペースに存在する場合でも、その変更は無視されます)。この機能については、ここでは詳しく説明しません。
  • [--]
  • には実際的な効果はなく、区別しやすくするためにオプションと操作オブジェクトを分離するだけです。
  • <リポジトリ>
  • クローンを作成するウェアハウスは、リモート ウェアハウスまたはローカル ウェアハウスの場合があり、https
    プロトコルまたは ssh プロトコルまたは git プロトコルなど。
  • [<ディレクトリ>]
  • このディレクトリを指定すると、Git リポジトリがこのディレクトリに複製されます。
  • -v, --verbose
  • クローン情報の詳細な出力。
  • [-c =, --config = リポジトリのクローン作成時に新しく作成した Git を保存します。ライブラリは構成変数を設定します。これはクローン作成の完了直後に有効になります
    推奨学習: "
    Git チュートリアル

    "

    以上がgit ウェアハウスを取得するための git init および git clone の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。