Как я могу спрятать определенный файл?
Возможный дубликат:
Как сохранить только один файл из нескольких измененных файлов
Как я могу зачеркнуть конкретный файл, оставляя оставшиеся в настоящее время изменения вне того, который я собираюсь сохранить?
Например, если статус git дает мне это:
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")
и я хочу только прикрепить приложение /views/cart/welcome.thtml, как бы я это сделал? Что-то вроде (но, конечно, это не работает):
git stash save welcome_cart app/views/cart/welcome.thtml
Ответы
Ответ 1
РЕДАКТИРОВАТЬ: Начиная с git 2.13, есть команда для сохранения определенного пути в stash: git stash push <path>
. Например:
git stash push -m welcome_cart app/views/cart/welcome.thtml
СТАРЫЙ ОТВЕТ:
Вы можете сделать это с помощью git stash --patch
(или git stash -p
) - вы войдете в интерактивный режим, где вам будет представлен каждый измененный git stash -p
. Используйте n
чтобы пропустить файлы, которые вы не хотите хранить, y
когда вы столкнетесь с тем, который хотите сохранить, и q
чтобы выйти и оставить оставшиеся фрагменты без изменений. a
сохранит показанный кусок и остальные фрагменты в этом файле.
Не самый удобный подход, но он выполняет работу, если он вам действительно нужен.
Ответ 2
Я обычно добавляю к изменениям индексов, которые я не хочу хранить, а затем сохраняю их с помощью опции -keep-index.
git add app/controllers/cart_controller.php
git stash --keep-index
git reset
Последний шаг не является обязательным, но обычно он вам нужен. Он удаляет изменения из индекса.
Внимание
Как отмечено в комментариях, это ставит все в тайник, как поставленный, так и неустановленный. Индекс -keep просто оставляет индекс только после того, как тайник будет выполнен. Это может привести к конфликтам слияния, когда вы позже поместите тайник.