Как я могу git stash конкретный файл? [дубликат]




Возможные Дубликаты:
как спрятать только один файл из нескольких файлов, которые изменились






как я могу спрятать конкретный файл, оставив другие в настоящее время измененные из тайника, который я собираюсь сохранить?



например, если 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")


и я только хочу спрятать приложение / просмотры / корзину / добро пожаловать.thtml, как бы я это сделал? Что-то вроде (но конечно это не так работа):



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

2 ответов:

EDIT: начиная с git 2.13, есть команда для сохранения определенного пути к тайнику:git stash push <path>. Например: git stash push -m welcome_cart app/views/cart/welcome.thtml.

ОТВЕТ:

вы можете сделать это с помощью git stash --patch (или git stash -p) -- вы войдете в интерактивный режим, где вам будет представлен каждый кусок, который был изменен. Используйте n чтобы пропустить файлы, которые вы не хотите прятать,y когда вы сталкиваетесь с тем, что вы хотите спрятать, и q чтобы выйти и оставить оставшиеся куски нераскрыты. a будет прятать показанный кусок и остальные куски в этом файле.

не самый удобный подход, но он получает работу, если вам это действительно нужно.

Я обычно добавляю изменения индекса, которые я не хочу прятать, а затем прятать с помощью опции --keep-index.

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

последний шаг является необязательным, но обычно вы этого хотите. Он удаляет изменения из индекса.


предупреждение Как отмечается в комментариях, это помещает все в тайник, как постановочный, так и неустановленный. --Keep-index просто оставляет индекс в покое после того, как тайник сделан. Это может вызвать конфликты слияния, когда вы позже поп тайник.

Comments

    Ничего не найдено.