リポジトリ ディレクトリなしでツリーのコピーを作成する、優れた「git エクスポート」ソリューションがあるかどうか疑問に思っています.git
。私が知っている方法は少なくとも 3 つあります。
git clone
続いて.git
リポジトリ ディレクトリを削除します。git checkout-index
この機能について言及していますが、「必要なツリーをインデックスに読み込むだけです...」で始まりますが、その方法がよくわかりません。git-export
git clone
は、基本的に一時的な場所に移動してからrsync --exclude='.git'
最終的な目的地に移動するというサードパーティ スクリプトです。
これらの解決策はどれも、本当に満足できるものではありません。最も近いのはsvn export
オプション 1 かもしれません。どちらも、まずターゲット ディレクトリを空にする必要があるためです。ただし、ツリーをインデックスに読み込むことが何を意味するのかがわかれば、オプション 2 の方がさらに優れているように思われます。
ベストアンサー1
おそらくこれを実現する最も簡単な方法はgit archive
拡張されたツリーだけが本当に必要な場合は、次のようにすることができます。
git archive master | tar -x -C /somewhere/else
ほとんどの場合、git から何かを「エクスポート」する必要がありますが、いずれにしても圧縮されたアーカイブが必要なので、次のような操作を行います。
git archive master | bzip2 >source-tree.tar.bz2
ZIPアーカイブ:
git archive --format zip --output /full/path/to/zipfile.zip master
git help archive
詳細については、非常に柔軟です。
アーカイブには .git ディレクトリは含まれませんが、.gitignore、.gitattributes などの他の隠し git 固有のファイルは含まれることに注意してください。アーカイブにそれらを含めたくない場合は、.gitattributes ファイルで export-ignore 属性を使用し、アーカイブを実行する前にこれをコミットしてください。続きを読む...
注: インデックスをエクスポートしたい場合は、コマンドは
git checkout-index -a -f --prefix=/destination/path/
(見るグレッグの答え詳細については)
以下は Linux で libchrony を使用する実際の例です。
mkdir $HOME/dev
cd $HOME/dev
pushd /tmp
git clone https://gitlab.com/chrony/libchrony.git
cd libchrony
BRANCH=$(git rev-parse --abbrev-ref HEAD)
git archive -o ../libchrony.zip --prefix="libchrony/" $BRANCH
popd
unzip /tmp/libchrony.zip
これらのコマンドは zip ファイルを生成し、 に抽出します$HOME/dev/libchrony
。次のコマンドを使用してアーカイブを覗くことができます。
$ unzip -v /tmp/libchrony
Archive: /tmp/libchrony.zip
e0a3807f770b56f6b0e9833254baa7c4fc13564b
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
0 Stored 0 0% 2023-07-20 09:37 00000000 libchrony/
49 Defl:N 47 4% 2023-07-20 09:37 37c3f2e2 libchrony/.gitignore
26530 Defl:N 9350 65% 2023-07-20 09:37 5622583e libchrony/COPYING
961 Defl:N 467 51% 2023-07-20 09:37 da9221e3 libchrony/Makefile
475 Defl:N 304 36% 2023-07-20 09:37 cae27f70 libchrony/README.adoc
3313 Defl:N 1119 66% 2023-07-20 09:37 37eb110f libchrony/chrony.h
7673 Defl:N 2261 71% 2023-07-20 09:37 5d455a52 libchrony/client.c
6190 Defl:N 2093 66% 2023-07-20 09:37 7ea9d81b libchrony/example-reports.c
16348 Defl:N 3855 76% 2023-07-20 09:37 e82f5fe3 libchrony/message.c
2946 Defl:N 1099 63% 2023-07-20 09:37 945ee82b libchrony/message.h
-------- ------- --- -------
64485 20595 68% 10 files