2015-04-18 9 views
6

Oft finde ich, dass ich Arbeitsstatus in einem Git-Baum ohne commits/branches mit git diff und Pastebins, E-Mail, etc. teilen möchten. Dies funktioniert gut, wenn alle Änderungen Änderungen an bereits sind- verfolgte Dateien, aber nicht, wenn neue Dateien beteiligt sind. Ich kann git add -N verwenden, um eine leere verfolgte Datei zu diff hinzuzufügen, aber das ist problematisch, wenn ich andere Dinge vor den Änderungen in Frage begehe (oder wenn die Änderungen in Frage nur Müll sind, den ich wegwerfen will). Gibt es eine einfache Möglichkeit, Diffs zu bekommen, um neue Dateien mit git diff hinzuzufügen, ohne ihren Status im Repository zu ändern? Bisher habe ich ein hässliches Skript:Erstellen git diff für neue nicht verdeckte Dateien

for i in "[email protected]" ; do diff -u /dev/null "$i" | sed -e '[email protected]^+++ @+++ b/@ ; done 

Ist das der beste Weg?

ich zu alternativen Lösungen nicht ganz im Gegensatz bin, der den git Zustand ändern, solange es leicht zu genau den Zustand zurückzukehren, bevor die Änderung vorgenommen (zB mit verschiedenen Dateien modifizieren, inszenierten einige Änderungen, etc.)

+2

Das mag zu einfach sein, aber ich würde einfach 'add ' vor 'git diff' hinzufügen. Dann 'git reset ', um es wieder zu tracken und du bist zurück, wo du angefangen hast. – omnikron

+0

@omnikron: Die Dateien, für die ich Diffs haben möchte, sind noch nicht inszeniert, also müsste man 'git diff --cached' verwenden. Wenn ich es mit 'git add -N hinzufügen, dann benutze' git reset', ist das sicher, oder könnte es die nicht geordnete Datei zerstören? –

+0

'Git reset' zerstört nichts in Ihrem Arbeitsverzeichnis, es sei denn, Sie führen es mit' --hard' Argument. – dizballanze

Antwort

0

Sie können nicht verfolgte, geänderte oder gelöschte Dateien in ein Archiv wie .tar.gz exportieren und an Ihre Kollegen versenden. Sie können versuchen, die folgenden:

  • Export geändert, verschoben und gelöschte Dateien

    tar zvcf ~/new-files-cache.tar.gz `git diff --name-only --diff-filter=ACMRT`

  • Export Untracked (neu), geändert und gelöscht Dateien

    tar zvcf ~/new-files-cache.tar.gz ` git status --short | sed 's/^ *[^ ]* \(.*\)/\1/g' `

Ich fand die Lösungen hier: https://cmanios.wordpress.com/2014/04/12/export-untracked-modified-moved-and-deleted-files-from-a-git-repository-to-archive/

Verwandte Themen