Откладываю только ООН-устроили изменения в Git
Я хотел бы сделать следующий рабочий поток:
- добавить изменения в сцену.
- припрятать все остальные изменения, которые не были организованы.
- кое-что делать с вещами в стадии (т. е. сборки, запуска тестов и т. д.)
- применить заначку.
есть ли способ сделать шаг 2?
пример
echo "123" > foo
git add foo # Assumes this is a git directory
echo "456" >> foo
git stash
cat foo # Should yield 123
6 ответов:
git stash save
имеет параметр--keep-index
что делает именно то, что вам нужно.Итак, бегите
git stash save --keep-index
.
git stash save --keep-index
Кроме Того, Re:
почему бы не зафиксировать изменения после их размещения? - Шин
A: потому что вы всегда должны проверять тестируемый код :) это означает, что вам нужно запустить тесты с только изменения, которые вы собираетесь совершить
все это помимо того, что конечно, как опытный программист, у вас есть врожденное желание тест и обзор всего эти изменения-только частично шучу
Это можно сделать в 3 этапа: сохранить поэтапные изменения, спрятать все остальное, восстановить индекс с поэтапными изменениями. Что в основном:
git commit -m "~~~ saved index ~~~" git stash save -u git reset --soft HEAD~1
Это будет делать именно то, что вы хотите.
С
git version 2.7.4
вы можете:git stash save --patch
The
git
попросит вас добавить или нет изменения в заначку.
А ты тогда просто ответьy
илиn
вы можете восстановить рабочий каталог, как вы всегда делаете, что:
git stash pop
или, если вы хотите сохранить сохраненные изменения в заначке:
git stash apply
расширяя предыдущие ответы, я иногда имею сложный набор изменений, но сначала хочу совершить отдельное изменение. Например, я мог заметить ошибку или другой неправильный код, который я хотел бы исправить перед моими поэтапными изменениями. Один из возможных маршрутов, чтобы взять это:
сначала припрятать все, но оставить постановочные изменения нетронутыми
$ git stash save --keep-index [--include-untracked]
теперь припрятать поэтапные изменения отдельно тоже
$ git stash save
внести изменения для исправления; и проверить; их совершают:
$ git add [--interactive] [--patch]
$ git commit-m"fix..."
теперь восстановите ранее выполненные изменения:
$ git stash pop
разрешить любые конфликты, и обратите внимание, что если были конфликты, то git будет применяться, но не за это верхний вход в тайник.
(... Затем зафиксируйте поэтапные изменения и восстановите тайник всех других изменений и продолжите ...)
еще один совет, связанный с вопросом:
когда вы эффективно спрятать неиндексированных изменений, используя
$ git stash save --keep-index
вы можете дать тайник сообщение, так что когда вы делаете
git stash list
Это более очевидно, что вы спрятали раньше, особенно если вы будете следовать этой операции тайника путем дальнейшего сохранения. Например$ git stash save --keep-index " изменения еще нет постановка"
(хотя на самом деле он содержит все изменения, как указано в других ответах).
например, за приведенным выше может следовать сразу:
$ git stash save "поэтапные изменения для функции X"
остерегайтесь, однако, что вы не могу затем использовать
$ git stash применить "stash@{1}" # # # ✘ не совсем делает то, что вы могли бы хотеть
восстановить только неиндексированных изменений.