395 Stimmen

Wie kann ich nur einige Dateien übertragen?

Ich habe zwei Projekte. Eines ist das "offizielle" Projekt und das zweite ist eine leichte Änderung (einige Dateien hinzugefügt). Ich habe einen neuen Zweig erstellt und neue Dateien hinzugefügt. Aber während der Entwicklung einige Dateien gemeinsam zu beiden Zweigen geändert wird.

Wie kann ich nur diese Dateien übertragen?

13voto

kaiser Punkte 20765

Wenn Sie bereits Dateien bereitgestellt haben, heben Sie die Bereitstellung einfach auf:

git reset HEAD [file-name-A.ext] [file-name-B.ext]

Dann fügen Sie sie nach und nach wieder hinzu.

3voto

MilanDemoniack Punkte 451

Ich denke, Sie können auch die Befehlszeile verwenden:

git add -p

So können Sie alle nicht übertragenen Dateien einzeln überprüfen und entscheiden, ob Sie sie übertragen wollen oder nicht.

Dann haben Sie einige Optionen, die für jede Änderung angezeigt werden: Ich verwende das "y" für "ja, ich möchte diese Datei hinzufügen" und das "n" für "nein, ich werde diese Datei später übertragen".

Stage this hunk [y,n,q,a,d,K,g,/,e,?]?

Bei den anderen Optionen ( q,a,d,K,g,/,e,? ) bin ich mir nicht sicher, was sie bewirken, aber ich schätze, dass das "?" Ihnen helfen könnte, wenn Sie mehr ins Detail gehen wollen.

Das Tolle daran ist, dass Sie dann Ihre Arbeit pushen und danach einen neuen Zweig erstellen können, auf den dann alle nicht freigegebenen Arbeiten folgen. Das ist sehr nützlich, wenn Sie viele verschiedene Dinge programmiert haben und Ihre Arbeit auf Github neu organisieren wollen, bevor Sie sie pushen.

Ich hoffe, das hilft, ich habe es noch nicht gesehen (falls es erwähnt wurde, mein Fehler)

1voto

James Punkte 4481

Dies ist ein einfacher Ansatz, wenn Sie nicht viele Codeänderungen haben:

1. git stash
2. git stash apply
3. remove the files/code you don't want to commit
4. commit the remaining files/code you do want

Wenn Sie dann den Code, den Sie entfernt haben (Bits, die Sie nicht übertragen haben), in einer separaten Übertragung oder einem anderen Zweig haben wollen, dann tun Sie das, während Sie noch auf diesem Zweig sind:

5. git stash apply
6. git stash

Mit Schritt 5, da Sie bereits den Stash angewendet und den Code, den Sie in Schritt 4 wollten, festgeschrieben haben, ist der diff und untracked im neu angewendeten Stash nur der Code, den Sie in Schritt 3 entfernt haben, bevor Sie in Schritt 4 festgeschrieben haben.

Als solcher ist Schritt 6 ein Versteck für den Code, den Sie nicht übertragen [wollen], da Sie diese Änderungen wahrscheinlich nicht verlieren wollen, richtig? Der neue Stash aus Schritt 6 kann nun auf diesen oder einen anderen Zweig übertragen werden, indem man git stash apply auf den richtigen Zweig anwendet und überträgt.

Dies setzt natürlich voraus, dass Sie die Schritte in einem Durchgang ausführen. Wenn Sie an einem anderen Punkt in diesen Schritten einen Vorrat anlegen, müssen Sie den Vorratsverweis für jeden der obigen Schritte notieren (und nicht nur den Grundvorrat und den letzten Vorrat anwenden).

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