Frage Wie kann ich eine bestimmte Datei speichern? [Duplikat]


Mögliche Duplikate:
So speichern Sie nur eine Datei aus mehreren Dateien, die sich geändert haben 

Wie kann ich eine bestimmte Datei speichern und die anderen, die gerade geändert wurden, aus dem Speicher entfernen, den ich gerade speichern möchte?

Zum Beispiel, wenn git Status mir das gibt:

younker % gst      
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   app/controllers/cart_controller.php
#   modified:   app/views/cart/welcome.thtml
#
no changes added to commit (use "git add" and/or "git commit -a")

und ich möchte nur app / views / cart / welcome.thtml stash, wie würde ich das tun? So ähnlich (aber das geht natürlich nicht):

git stash save welcome_cart app/views/cart/welcome.thtml

1030
2018-03-31 21:05


Ursprung


Antworten:


BEARBEITEN: Seit Git 2.13 gibt es einen Befehl zum Speichern eines bestimmten Pfades zum Stash: git stash push <path>. Beispielsweise: git stash push -m welcome_cart app/views/cart/welcome.thtml.

ALTE ANTWORT:

Sie können das tun mit git stash --patch (oder git stash -p) - Sie gelangen in den interaktiven Modus, in dem Ihnen jedes einzelne Hunk angezeigt wird, das geändert wurde. Benutzen n um die Dateien zu überspringen, die Sie nicht speichern möchten, y wenn du auf diejenige triffst, die du verstauen willst, und q zu beenden und die restlichen Kerle untätig zu lassen. a speichert das angezeigte Hunk und den Rest der Hunks in dieser Datei.

Nicht der benutzerfreundlichste Ansatz, aber es bringt die Arbeit, wenn Sie es wirklich brauchen.


1574
2018-03-31 21:19



Normalerweise füge ich Indexänderungen hinzu, die ich nicht speichern und dann mit der Option --keep-index speichern möchte.

git add app/controllers/cart_controller.php
git stash --keep-index
git reset

Letzter Schritt ist optional, aber normalerweise möchten Sie es. Es entfernt Änderungen aus dem Index.


Warnung Wie in den Kommentaren angemerkt, bringt dies alles ins Spiel, sowohl inszeniert als auch nicht inszeniert. Der --keep-Index hinterlässt nur den Index nach dem Stash. Dies kann zu Mischkonflikten führen, wenn Sie den Stash später freigeben.


245
2017-12-18 20:40