2016-09-06 20 views
1

.gitディレクトリを含むgitリポジトリディレクトリを圧縮しようとしています。私はディレクトリ上でタールを実行しようとしましたが、それはすべてのサブモジュールを追加するため、オリジナルよりも大きなフォルダを作成します。`.git`ディレクトリが含まれているgitリポジトリディレクトリを参照します。

私は、以下のコマンドを試してみましたが、それらは.gitディレクトリ -

git archive master --format=tar --output="../gridImageSearch.zip"

せずに次のコマンドをZipは.gitディレクトリをzip圧縮が、フォルダが大きすぎる -

tar -zcvf ../blah.tar.gz blah

何か提案がありますか?

答えて

0

ここに1つの可能な答えがあります。 findコマンドを使用すると、サブモジュールに含まれるファイルを除いて、リポジトリ内のすべてのファイルのリストを生成できます。サブモジュールは「.gitディレクトリを含むディレクトリ」と識別します。 findコマンドは次のようになります。

それがディレクトリである場合、このディレクトリに含まれるすべてのものを見ている」という意味と .git という名前のディレクトリが含まれてい
find . \(\! -depth 0 -type d -execdir test -f {}/.git \; -prune \) \ 
    -o -type f -print 

は、最上位のディレクトリではありません、に降りませんそれ以外の場合はファイル名を出力します。 "

あなたはtarコマンドへの入力としてこれを使用することができます:STDIN上のファイルのリストを受け入れ

tar -T- -n -cz -f repo.tar.gz 

-T-は、findが私たちのためにあることを行っているので、確認してください)(サブディレクトリに再帰的にしていないになり、そして、(-c)gzipで圧縮された(-z)出力を作成します

完全なコマンドは次のようになります。

find . \(\! -depth 0 -type d -execdir test -f {}/.git \; -prune \) \ 
    -o -type f -print | 
tar -T- -n -cz -f repo.tar.gz 

これは、現在のディレクトリにrepo.tar.gzという名前の圧縮tarアーカイブを作成します。

  • git archiveを使用していないことで、あなたが誤ってgitリポジトリの一部ではない、あなたの作業ディレクトリ内のファイルが含まれることがあります。これが失敗することを

    方法。 git cleanを使用すると、それを避けることができます。

  • また、まだリポジトリにコミットされていない変更を含むアーカイブを構築することもできます。スクリプトを実行する前に、変更されていない変更を明示的にチェックすることで、これを回避できます。

0

あなたは.gitディレクトリなしでリポジトリを圧縮したい場合は、

tar -c --exclude .git -f - foo | gzip >foo.tgz 
を実行

tar -c -f - foo | gzip >foo.tgz 

を使用してgitリポジトリを圧縮

関連する問題