2070 Stimmen

Wie verstaut man eine nicht verfolgte Datei?

Ich habe Änderungen an einer Datei und eine neue Datei und möchte git stash verwenden, um sie wegzulegen, während ich zu einer anderen Aufgabe wechsle. Aber git stash selbst speichert nur die Änderungen an der bestehenden Datei; die neue Datei verbleibt in meinem Arbeitsbaum und bringt meine zukünftige Arbeit durcheinander. Wie kann ich diese nicht verfolgte Datei auslagern?

58 Stimmen

Wenn Sie nur nicht verfolgte Dateien in Ihrem Versteck haben, sieht es so aus, als wäre es ein leeres Versteck, wie in git stash show gibt nichts zurück und man könnte versucht sein, es zu löschen (wie ich es gerade getan habe, obwohl es ein nützliches Skript enthielt, das ich vor einigen Monaten geschrieben habe wie man einen verlorenen Vorrat wiederfindet )

1voto

Andrew Grimm Punkte 73882

Ich dachte, das Problem könnte gelöst werden, indem man Git mitteilt, dass die Datei existiert, anstatt den gesamten Inhalt in den Staging-Bereich zu übertragen, und dann git stash . Araqnid beschreibt wie man das erstere macht.

git add --intent-to-add path/to/untracked-file

ou

git update-index --add --cacheinfo 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 path/to/untracked-file

Letzteres funktioniert jedoch nicht:

$ git stash
b.rb: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state

1 Stimmen

Soweit ich das beurteilen kann, funktioniert Ersteres auch nicht. Siehe meine Antwort um eine Lösung für dieses Problem zu finden.

1voto

Ivo van Leeuwen Punkte 83

Ich stieß auf ein ähnliches Problem bei der Verwendung von Sourcetree mit neu erstellten Dateien (sie würden auch nicht in den Stash aufgenommen werden).

Wenn ich zuerst "Alles bereitstellen" und dann "Verstecken" wählte, wurden die neu hinzugefügten Komponenten verfolgt und daher in den Vorrat aufgenommen.

-7voto

Dieter_be Punkte 847

Früher habe ich darüber nachgedacht und mir das Gleiche gewünscht. Aber mit der Zeit habe ich gemerkt, dass es wirklich nicht nötig ist. Wenn man etwas versteckt, ist es in Ordnung, die neuen Dateien zu lassen. Es kann nichts "Schlimmes" mit ihnen passieren (wenn Sie etwas anderes auschecken, wird Git einen Fehler machen und die bestehende, nicht verfolgte Datei nicht überschreiben)

Und da in der Regel die Zeitspanne zwischen dem git stash und die git stash pop recht klein ist, werden Sie die nicht verfolgte Datei schnell wieder brauchen. Ich würde also sagen, dass die Unannehmlichkeit, dass die Datei in git status während Sie an etwas anderem arbeiten (zwischen den git stash und die git stash pop ) ist geringer als die Unannehmlichkeiten, die durch die Arbeit und die notwendige Aufmerksamkeit entstehen, die es sonst kosten würde, die nicht verfolgte Datei zu Ihrem Stash hinzuzufügen.

16 Stimmen

Das hängt vom jeweiligen Projekt ab. Nehmen wir an, die nicht verfolgte Datei ist ein (halb geschriebener) Unit-Test, und das Testing Harness führt alle Unit-Tests im Verzeichnis aus. Etc.

1 Stimmen

Ein anderes Beispiel ist, wenn Sie auf zwei Computern arbeiten und Daten von A nach B, aber nicht von B nach A verschieben dürfen. Wenn Sie ein neues Stück Code erstellen, um ein Problem zu lösen, das zuerst auf B auftritt, das Sie aber sowohl auf A als auch auf B haben wollen, möchten Sie die Datei auf B zwischenlagern können, so dass Sie, wenn Sie diese Datei auf A neu erstellen und dann in einem Bundle rüberbringen, die zwischengelagerte Version mit git diff überprüfen können, um sicherzustellen, dass Sie keinen Fehler gemacht haben.

8 Stimmen

Nur weil eine Datei in einem Zweig nicht verfolgt wird, bedeutet das nicht, dass sie nicht mit einer verfolgten Datei in einem anderen Zweig in Konflikt gerät.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X