Копить только один файл
Я хотел бы иметь возможность сохранять только изменения из одного файла:
git stash save -- just_my_file.txt
Вышеприведенное не работает. Любые альтернативы?
Ответы
Ответ 1
Я думаю, что stash -p
- это, вероятно, выбор, который вы хотите, но на всякий случай, когда вы столкнетесь с другими более сложными вещами в будущем, помните, что:
Stash
действительно просто очень простая альтернатива только немного более сложным наборам branch
. Stash очень полезен для быстрого перемещения вещей, но вы можете выполнять более сложные вещи с помощью ветвей без этой гораздо большей головной боли и работы.
# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout master
заходите и делайте то, что хотите, а затем просто rebase
и/или merge
tmpbranch. На самом деле это не так много лишней работы, когда вам нужно делать более тщательное отслеживание, чем позволяет stash.
Ответ 2
Вы можете интерактивно спрятать отдельные строки с помощью git stash -p
(аналогично git add -p
).
Не требуется имя файла, но вы можете просто пропустить другие файлы с помощью d, пока не достигнете файла, который вы хотите спрятать, и все изменения там будут a.
Ответ 3
Лучшим вариантом является создание всего, кроме этого файла, и указание stash, чтобы сохранить индекс с git stash save --keep-index
, тем самым сбив ваш неустановленный файл:
$ git add .
$ git reset thefiletostash
$ git stash save --keep-index
Как указывает Дэн, thefiletostash
является единственным, который должен быть reset в stash, но он также застревает другие файлы, поэтому он не совсем то, что вы хотите.
Ответ 4
На всякий случай вы на самом деле означаете "отменить изменения" всякий раз, когда вы используете "git stash" (и на самом деле не используйте git stash для временного хранения), в этом случае вы можете использовать
git checkout -- <file>
Обратите внимание, что git stash - это просто более простая и простая альтернатива ветвлению и работе.
Ответ 5
Если вы не хотите указывать сообщение с вашими скрытыми изменениями, передайте имя файла после двойной черты.
$ git stash -- filename.ext
Если это неотслеживаемый/новый файл, вам придется сначала его разместить.
Однако, если вы хотите указать сообщение, используйте push
.
git stash push -m "describe changes to filename.ext" filename.ext
Оба метода работают в git версии 2. 13+