2010-06-08 10 views
10

Ich bin Git sehr neu und ich habe ein kleines Problem.Wie exportiert man alle geänderten/hinzugefügten Dateien von Git?

In SVN [dies ist wie eine Only Fools and Horses Geschichte von Onkel Albert .. „während des Krieges ...“] als ich, eine Produktionsstätte mit meinen neuesten Änderungen aktualisieren wollte ich tun würde diff in TSVN und exportiert alle geänderten/hinzugefügten Dateien zwischen zwei Revisionen. Wie Sie sich vorstellen können, war es einfach, diese Dateien später zu einer Produktionsstelle zu bringen.

Es scheint jedoch, ich bin nicht in der Lage, eine "Export geänderte Dateien" -Option in Git zu finden. Ich kann ein diff und siehe die Änderungen, kann ich eine Liste von Dateien, aber ich kann sie nicht wirklich exportieren. Gibt es einen vernünftigen Weg, dies zu tun? Fehle ich etwas Einfaches?

Nur um noch einmal zu klären, muss ich alle die Änderungen zwischen zwei spezifischen Commits exportieren.

Vielen Dank im Voraus!

Antwort

14

Wie möchten Sie sie exportieren? Sie sagen, Sie haben bereits eine Liste; was willst du noch? Angenommen, Sie bekommen Ihre Liste mit git diff --name-only ...

git archive --output=<file> HEAD $(git diff --name-only ...) 

tar -czf <file> $(git diff --name-only ...) 

cp $(git diff --name-only ...) <export-directory> 

So etwas wie das?

Oder Sie könnten sogar das Diff selbst verwenden - es kann mit git apply (oder sogar patch, glaube ich) angewendet werden.

+1

die erste Option für mich funktioniert! Im Idealfall würde ich die cp-Variante verwenden, aber die Ordnerstruktur beibehalten (ich vermute, es ist eine Frage der Parameter für git diff?) Ich kann nicht glauben, dass es so einfach ist. Danke! –

+0

Ich sah nur Ihre Bearbeitung .. Leider kann ich nicht 'git apply' oder' patch' verwenden, ich habe nur FTP-Zugriff auf die Website: -/ –

+0

@dr Hannibal Lecter: Ja, ich dachte, Sie müssten tatsächlich passieren Dateien. Und ja, Befehlsersetzung (das '$ (...)') ist eines dieser Schlüsselelemente, das in Linux-Shells alles möglich (und einfach) macht. – Cascabel

2

Leihen von einigen der Antworten in here, hier ist ein weiterer Weg, um Dateien zu exportieren, die im Arbeitsbereich geändert werden:

git diff --diff-filter=ACMRT --name-only HEAD | xargs tar -rf export.tar 

Möglicherweise müssen Sie die folgenden vorher auszuführen untracked Dateien hinzufügen, wenn Sie brauchen um sie in der diff:

git add * 

[Dies funktioniert in git-bash in Windows]

Verwandte Themen