Jak mogę schować konkretny plik? [duplikat]

Możliwy duplikat:
Jak ukryć tylko jeden plik z wielu plików, które uległy zmianie

Jak mogę schować konkretny plik, pozostawiając inne aktualnie zmodyfikowane pliki poza schowkiem, który mam zapisać?

Na przykład, jeśli git status daje mi to:

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")

A ja chcę tylko schować app / views/cart / welcome.thtml, jak bym to zrobił? Coś w stylu (ale oczywiście to nie działa):

git stash save welcome_cart app/views/cart/welcome.thtml
 1074
Author: Cœur, 2011-04-01

2 answers

EDIT: od wersji git 2.13 istnieje polecenie do zapisania określonej ścieżki do skrytki: git stash push <path>. Na przykład: git stash push -m welcome_cart app/views/cart/welcome.thtml.

STARA ODPOWIEDŹ:

Możesz to zrobić używając git stash --patch (lub git stash -p) - wejdziesz w tryb interaktywny, w którym będziesz prezentowany z każdym kawałkiem, który został zmieniony. Użyj n, Aby pominąć pliki, których nie chcesz ukryć, y, gdy napotkasz ten, który chcesz ukryć, i q, aby zamknąć i pozostawić pozostałe kawałki nieumyte. a ukryje pokazano przystojniaka i resztę przystojniaków w tym pliku.

Nie jest to najbardziej przyjazne dla użytkownika podejście, ale wykonuje pracę, jeśli naprawdę jej potrzebujesz.

 1639
Author: svick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-12 10:48:04

Zazwyczaj dodaję do indeksu zmiany, których nie chcę ukrywać, a następnie przechowuję za pomocą opcji -- keep-index.

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

Ostatni krok jest opcjonalny, ale zwykle go chcesz. Usuwa zmiany z indeksu.


Warning Jak zauważono w komentarzach, to umieszcza wszystko w skrytce, zarówno zainscenizowane, jak i nieakcentowane. --Keep-index zostawia tylko indeks po skończeniu skrytki. Może to spowodować konflikty scalania, gdy później otworzysz skrytkę.

 254
Author: skalee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-20 23:18:06