「git エクスポート」(「svn エクスポート」のような)を実行しますか? 質問する

「git エクスポート」(「svn エクスポート」のような)を実行しますか? 質問する

リポジトリ ディレクトリなしでツリーのコピーを作成する、優れた「git エクスポート」ソリューションがあるかどうか疑問に思っています.git。私が知っている方法は少なくとも 3 つあります。

  1. git clone続いて.gitリポジトリ ディレクトリを削除します。
  2. git checkout-indexこの機能について言及していますが、「必要なツリーをインデックスに読み込むだけです...」で始まりますが、その方法がよくわかりません。
  3. git-exportgit 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

おすすめ記事