it-swarm-eu.dev

Jak mohu zipovat složku, ale vyloučit podsložku .git

Snažím se vytvořit soubor Zip ze složky a chtěl bych vyloučit .git podadresář z výsledného souboru Zip.

Šel jsem do nadřazené složky té, kterou chci Zip (nazvanou bitvolution) a dělám:

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

Ale to nevylučuje .git podsložka.

Vyzkoušel jsem různé kombinace, -x .git*, -x \.git/*, -x .git/\*, -x \.git/\*. Také jsem se pokusil použít úplnou cestu pro argument vyloučení ... ale prostě jsem se tam nedostal.

221
Tom

Správný výraz je -x '*.git*', takže úplný příkaz by měl být:

Zip -r bitvolution.Zip ./bitvolution -x '*.git*'

Vysvětlení od http://selfsolved.com/problems/Zip-command-exclude-svn-director :

Správné zaklínání je

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

Můžete také přidat
--exclude=*.DS_Store* pro vyloučení nepříjemného adresáře Mac OS X zobrazení souborů metadat.

Všimněte si, že výraz byl předán --exclude používá celou původní relativní cestu k adresáři jako původní řetězec, se kterým se má porovnávat. Tak .svn/* sám o sobě nefunguje; zástupný znak vpředu zajišťuje, že odpovídá .svn adresáře kdekoli ve stromu adresářů.

268
Isaiah

Pokud se pokoušíte uzavřít projekt, který je uložen v Gitu, použijte git archive příkaz. Ze zdrojového adresáře:

git archive -o bitvolution.Zip HEAD

K archivaci projektu v určitém okamžiku můžete použít libovolný ID potvrzení nebo tagu místo HEAD.

Pokud chcete do každého souboru přidat předponu (např. Složku nejvyšší úrovně):

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

Můžete také upravit úroveň komprese například mezi 0 (bez komprese) a 9 (maximální komprese) včetně

git archive -o bitvolution.Zip -9 HEAD

Další možnosti naleznete na stránce nápovědy (git help archive).

143
Blair

Přidal jsem zpětné lomítko:

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

mužská stránka o zpětném lomítku:

Zpětné lomítko zamezuje substituci názvu souboru Shell, takže shodu názvu provádí Zip na všech úrovních adresářů.

30
Priit Tamboom

Za předpokladu, že máte git nainstalovaný na počítači, který právě děláte, můžete také použít samotný git k vytvoření vašeho archivu.

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

Pokud používáte zsh, příkaz by měl vypadat takto:

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

Pokud používáte: Zip -r target_name.Zip source_dir -x /*.git/*. bez 'regex' bude zsh zpracovávat před spuštěním Zipu. Zobrazí se chybová zpráva:

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

Pokud chcete ignorovat celou složku, použijte následující formát.

Například ignorovat každých node_modules složka, v každém koncovém bodě:

Zip -r API.Zip API/* -x */node_modules/*
0
waz