Я хотел бы иметь возможность сохранять только изменения из одного файла:
git stash save -- just_my_file.txt
Вышеприведенное не работает. Любые альтернативы?
Я хотел бы иметь возможность сохранять только изменения из одного файла:
git stash save -- just_my_file.txt
Вышеприведенное не работает. Любые альтернативы?
Я думаю, что 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.
Вы можете интерактивно спрятать отдельные строки с помощью git stash -p
(аналогично git add -p
).
Не требуется имя файла, но вы можете просто пропустить другие файлы с помощью d, пока не достигнете файла, который вы хотите спрятать, и все изменения там будут a.
Лучшим вариантом является создание всего, кроме этого файла, и указание stash, чтобы сохранить индекс с git stash save --keep-index
, тем самым сбив ваш неустановленный файл:
$ git add .
$ git reset thefiletostash
$ git stash save --keep-index
Как указывает Дэн, thefiletostash
является единственным, который должен быть reset в stash, но он также застревает другие файлы, поэтому он не совсем то, что вы хотите.
На всякий случай вы на самом деле означаете "отменить изменения" всякий раз, когда вы используете "git stash" (и на самом деле не используйте git stash для временного хранения), в этом случае вы можете использовать
git checkout -- <file>
Обратите внимание, что git stash - это просто более простая и простая альтернатива ветвлению и работе.
Если вы не хотите указывать сообщение с вашими скрытыми изменениями, передайте имя файла после двойной черты.
$ git stash -- filename.ext
Если это неотслеживаемый/новый файл, вам придется сначала его разместить.
Однако, если вы хотите указать сообщение, используйте push
.
git stash push -m "describe changes to filename.ext" filename.ext
Оба метода работают в git версии 2. 13+