Git プロジェクトをエクスポートする

John Wachira 2022年7月12日
Git プロジェクトをエクスポートする

この記事では、Git でのプロジェクトのエクスポートについて説明します。git archive コマンドを使用して、Git リポジトリのアーカイブファイルを作成します。

このようなファイルは、複数のファイルを 1つに結合します。アーカイブファイルを使用すると、開発者間での共有や長期保存が簡単になります。

git archive コマンド

それは何をするためのものか?

git archive コマンドを使用して、コミット、ブランチ、ツリーなどの指定された参照のアーカイブファイルを生成します。以下に示すように、このコマンドを他の引数と一緒に使用して、出力を変更できます。

Git エクスポートの例

基本的な git archive コマンドから始めましょう。

$ git archive --format=tar HEAD

ターミナルでこのコマンドを実行すると、リポジトリの HEAD からアーカイブファイルが作成されます。アーカイブは一時的な stdout ストリームに移動します。

以下に示すように、永続ファイルを指定できます。

$ git archive --output=./sample_repo_archive.tar --format=tar HEAD

上記のコマンドを実行すると、HEAD ref のアーカイブファイルが作成され、sample_repo_archive.tar ファイルに保存されます。 --format=tar オプションは、非圧縮のアーカイブ出力を作成するように Git に指示します。

ziptar.gz などの他の一般的なフォーマットをフォーマットオプションに渡すことができます。フォーマットオプションを含めない場合、Git は指定された --output オプションを行います。

$ git archive --output=./sample_repo_archive.tar.gz --format=tar HEAD ./Updates

Git を使用すると、リポジトリの一部をアーカイブすることもできます。上記のコマンドは、リポジトリの/.Updates ディレクトリにあるファイルのアーカイブファイルを作成します。

Git アーカイブの使用オプション

上記の例は、最も頻繁に使用される git archive オプションの基本的な考え方を示しています。出力をさらに変更するためにコマンドに渡すことができる別のオプションを調べてみましょう。

--prefix=<prefix>/

prefix 引数を使用して、アーカイブ内のすべてのファイルへのパスを添付し、後で簡単に抽出できるようにします。

--remote=<repo>

これは、リモートリポジトリのアーカイブを作成するシナリオでの go-to コマンドです。コマンドを実行するときは、リモートリポジトリの URL を含める必要があります。

このコマンドを使用すると、リモートリポジトリで ref を指すこともできます。

コマンド設定

git archive コマンドは、次の構成オプションを尊重します。

$ git config --global tar.umask

マスク解除構成を使用して、アーカイブファイルに Unix レベルのアクセス許可ビット制限を指定します。

tar.<format>.command

上記のオプションを使用して、git archive 出力を実行するカスタムシェルコマンドを作成します。これは、stdout ストリームをカスタムツールにパイプし、--output オプションを省略するのと同じです。

この操作の基本的な概念は、固定された調整済みアーカイブ後処理ツールを作成することです。

tar.<format>.remote

上記のオプションを有効にして、リモート開発者が指定された形式でアーカイブをフェッチできるようにすることができます。

簡単に言うと、git archive コマンドを使用して、Git リポジトリの配布可能なパッケージを生成します。このコマンドを使用して、特定のツリー、ブランチ、またはコミットをターゲットにすることができます。

また、圧縮を追加するためのいくつかの出力形式があります。

著者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn