フォルダーを圧縮し、.gitサブフォルダーを除外するにはどうすればよいですか


196

フォルダーからzipファイルを作成しようとしてい.gitますが、結果のzipファイルからサブフォルダーを除外したいと思います。

私はzipしたいもの(bitvolutionと呼ばれる)の親フォルダに行って、私はやっています:

zip -r bitvolution.zip bitvolution -x ".git"

ただし、.gitサブフォルダーは除外されません。

私は、様々な組み合わせを試してみました-x .git*-x \.git/*-x .git/\*-x \.git/\*。また、exclude引数にフルパスを使用しようとしましたが、そこに到達しませんでした。

回答:


234

正しい式は-x *.git*ですので、完全なコマンドは次のようになります。

zip -r bitvolution.zip bitvolution -x *.git*

http://selfsolved.com/problems/zip-command-exclude-svn-directorからの説明:

正しい呪文は

zip -9 -r --exclude=*.svn*  foo.zip [directory-to-compress]

また、a
--exclude=*.DS_Store*を追加して、迷惑なMac OS Xディレクトリ表示メタデータファイルを除外することもできます。

渡される式は--exclude、一致する元の文字列として元の相対ディレクトリパス全体を使用していることに注意してください。したがって.svn/*、それ自体では機能しません。前にあるワイルドカード文字により.svn、ディレクトリツリー内の任意のディレクトリと一致することが保証されます。


20
私は次のように、引用符でグロブをラップやバックスラッシュとアスタリスクをエスケープしなければならなかったzip --exclude '*.git*' -r directory.zip directoryzip --exclude \*.git\* -r directory.zip directory
ドミトリーMinkovsky

6
something.gitwhateverと呼ばれる他のファイルを失うことが心配な場合は、を使用することもできます--exclude /.git*
エリンコール14

4
:ZSHに私はバックスラッシュを追加する必要がありました-x \*.git\*
DmitrySandalov

2
zshのバックスラッシュと引用符に代わる私の好み:noglob zip -r out.zip someFolder -x *someExcludedFolder*
セバスチャン

tarで使用する方法は?tarコマンドでは機能しません。
RNクシュワハ

124

Gitに保存されているプロジェクトを圧縮しようとしている場合は、git archiveコマンドを使用します。ソースディレクトリ内から:

git archive -o bitvolution.zip HEAD

HEAD特定の時点でプロジェクトをアーカイブする代わりに、任意のコミットまたはタグIDを使用できます。

すべてのファイルにプレフィックス(たとえば、最上位フォルダー)を追加する場合:

git archive -o bitvolution.zip --prefix=bitvolution/ HEAD

また、0(圧縮なし)から9(最大圧縮)までの圧縮レベルを調整することもできます。たとえば、

git archive -o bitvolution.zip -9 HEAD

他のオプションについては、ヘルプページ(git help archive)を参照してください。


25
これにはgitフォルダーが含まれないだけでなく、gitignoreファイルにあるものもすべて除外されます。あなたは賛成を得ます。
JoeMoe1984 14年

1
まさに私がやろうとしていたこと!
Bjarte

私はパーティーに遅れましたが、これは絶対に私を驚かせました。素晴らしい答えです!
トム

なぜこれが最良の答えではないのだろうか
-nabtron

私にとって、これは...最大のTILの今日だった
ショーンCicoria

27

バックスラッシュを追加しました:

zip -r bitvolution.zip bitvolution -x \*.git\*

バックスラッシュに関するmanページ:

バックスラッシュはシェルのファイル名の置換を回避するため、名前の一致はすべてのディレクトリレベルでzipによって実行されます。


ディレクトリを除外するためのUbuntu 14.04に私のためにスラッシュフォークとアスタリスクを前に付ける
のDimitry K

6

これを行うマシンにgitがインストールされていると仮定すると、git自体を使用してアーカイブを作成することもできます。

git archive --format=zip HEAD -o bitvolution.zip

2

zshを使用している場合、コマンドは次のようになります。

zip -r target_name.zip source_dir -x '/*.git/*'

場合は、使用しますzip -r target_name.zip source_dir -x /*.git/*。'regex'がない場合、zshはzip実行の前に処理します。エラーメッセージが表示されます。

zsh: no matches found: /*.git/*

ありがとう!それが、Windows上のUbuntuでBashを使用してうまくいったことです。
アドリアーノモネッキ

私はこのパターンがどのように機能するかを理解していませんでしたが、zshで働いていました。
サイン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.