2013-06-27 7 views
16

I git-Archiv bin mit einem Unterverzeichnis in einer Git-Repo zu archivieren, etwa so:git-Archiv ein Unterverzeichnis -

git archive -o ../subarchive.zip HEAD subdir/* 

jedoch das resultierende Archiv der subdir/Verzeichnisstruktur unterhält, dh die Inhalte sind:

subdir/ 
    whatever.js 
    morestuff.js 

Wenn ich eigentlich whatever.js und morestuff.js an der Wurzel des Archivs wollen.

Wie? Vielen Dank.

Antwort

25

Sie können das tun wie folgt aus:

git archive -o ../subarchive.zip HEAD:subdir 

By the way, eine einfache Möglichkeit, mit dem Befehl zu spielen und sehen, was es generiert, wenn Sie es in dieser Form verwenden:

git archive --format=tar HEAD:subdir | tar t 
git archive --format=tar HEAD subdir | tar t 
# ... and so on ... 

Sobald Sie sehen, was Sie suchen, können Sie das Format ändern und verwenden Sie die -o Flag, um das Archiv tatsächlich zu erstellen.

+0

Gibt es eine Möglichkeit, dies effizient für Remote-Repos, z. nur eine einzige Revision eines gigantischen Repos zu holen, die man nicht klonen kann? Ich habe '--remote' versucht, aber es war lächerlich langsam. –

+0

Es funktioniert, großartig. Ich habe versucht zu verstehen, welcher Teil der GIT-Dokumentation darüber gesprochen hat, konnte es aber nicht. Können Sie bitte pls? – Meglio

+0

@Meglio 'git archive --help', lassen Sie mich wissen, wenn Sie etwas nicht finden können (und dann bitte so spezifisch wie möglich sein) – janos

Verwandte Themen