Подтвердить что ты не робот

Копить только один файл

Я хотел бы иметь возможность сохранять только изменения из одного файла:

git stash save -- just_my_file.txt

Вышеприведенное не работает. Любые альтернативы?

4b9b3361

Ответ 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+