Как сохранить текущее состояние моей промежуточной области?
Вопрос:
Я добавил несколько файлов в мою промежуточную область. Я хочу временно сохранить эту информацию. Как?
Фон:
Иногда я выполняю несколько крупных рефакторингов. На самом деле имеет смысл совершить полный результат.
Во время этого рефакторинга я также делаю некоторые несвязанные изменения, которые я бы хотел совершить независимо.
Например, рефакторинг переименовал метод. Несвязанное изменение фиксировало орфографическую ошибку для одного параметра другого метода в том же классе.
Теперь предположим, что я уже добавил большинство файлов в промежуточную область, когда понял, что я забыл заранее совершить одно из несвязанных изменений.
Добавление файлов в промежуточную область требует времени, потому что я проверяю каждый файл, чтобы убедиться, что я действительно выполняю только то, что хочу. Таким образом, просто удаление их всех из промежуточной области не является решением.
Вместо этого я хотел бы сделать следующее:
- Сохранить текущее состояние промежуточной области
- Удалить все поэтапные файлы
- Настройте несвязанное изменение
- Зафиксируйте несвязанные изменения.
- Повторно примените сохраненное состояние к промежуточной области.
Как это возможно?
Альтернативным решением будет возможность создания нескольких промежуточных областей, но я не думаю, что это возможно.
Ответы
Ответ 1
Следующая цепочка команд должна делать трюк
git commit -m "temporary" # save current stage are as an actual commit
git commit unrelated_files -m "The other feature"
git stash # hide the rest
git rebase -i HEAD~2 # change the order of two last commits
git reset HEAD^ # rollback the "temporary" commit
git add . # add everything from that commit back to staging
git stash pop # and return back all initially unstaged stuff
Ответ 2
Вам определенно нужно git stash
Это сохранит вашу текущую работу и покинет ваш каталог, как если бы вы сделали reset для HEAD.
Теперь вы можете переключаться между ветвями, выполнять некоторую работу над другой темой.
Когда вы снова будете готовы к работе над своей функцией, повторно примените свои спрятанные изменения с помощью git stash apply
Вы можете комбинировать несколько задержек, git stash list
будет их перечислять, затем вы можете выбрать, какой из них применить, например git stash apply @{1}
Изменить:
Как пояснил @nevik-rehnel в комментариях, вы также можете использовать интерактивное добавление.
Не разбирайте все, используйте git add -p
, чтобы выполнить несвязанные изменения, зафиксировать, а затем восстановить все.
Ответ 3
Почему вы не можете сохранить его как ветку и начать новую ветку
Ответ 4
Казалось, это сработало:
- git commit -m "temp"
- git stash -u
- git reset HEAD ^
- git сохранить сохранение "MeepMeep!"
- git stash pop stash @{1}