web-dev-qa-db-ja.com

フォルダーを圧縮するが、.gitサブフォルダーを除外する方法

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

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

Zip -r bitvolution.Zip bitvolution -x ".git"

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

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

188
Tom

正しい式は-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]

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

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

225
Isaiah

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)を参照してください。

120
Blair

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

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

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

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

26
Priit Tamboom

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

git archive --format=Zip HEAD -o bitvolution.Zip
6
Tatu Lahtela

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/*
2
g10guang