#git
#git
Вопрос:
Мой сценарий:
- Я работаю над веткой
- сделайте несколько коммитов в этой локальной ветке
- есть изменения в моей рабочей папке
Теперь я обнаружил небольшую ошибку или опечатку.
- Я хочу зафиксировать (новую) ветку
- эта новая ветка должна основываться не на текущей ветке, а, например, на «главном»
- эту новую ветку не следует извлекать, я хочу остаться в текущей ветке и продолжить
Мой текущий рабочий процесс использует tortoise git, фиксирует новую ветку, затем перебазирует эту ветку, удалив все коммиты, кроме последнего, а затем снова проверяет мою «текущую» ветку.
Текущий поток
git branch my-typo-fix master
git checkout my-typo-fox
git add myfile
git commit -m "Typo in my file"
git checkout my-current-branch
Это не всегда работает, когда ожидающие изменения конфликтуют, и это также не то, что я хочу зафиксировать в этой ветке исправления. Также это не очень эффективно.
Можно ли улучшить этот рабочий процесс или, может быть, я делаю это совершенно неправильно?
Обновить
Немного улучшен рабочий процесс, основанный на комментарии Михаила
git checkout -b my-typo-fix master
git add myfile
git commit -m "Typo in my file"
git checkout my-current-branch
Ответ №1:
Можно ли улучшить этот рабочий процесс
git stash
сделано для этого:
git stash
git checkout master
git checkout -b my-typo-fix
# make change
git add ...
git commit ...
git checkout my-current-branch
git stash pop
эту новую ветку не следует извлекать, я хочу остаться в текущей ветке
Затем вам нужно клонировать репозиторий в другой рабочий каталог и внести туда исправление. git commit
по определению всегда работайте с веткой, которая в данный момент извлечена. Но конечный результат данного подхода тот же.
Комментарии:
1. Использование stash приведет к тому, что внесенные мной изменения исчезнут из рабочей папки, правильно?
2. Да, и они вернутся, когда вы откроете.
Ответ №2:
Прежде всего, вы могли бы объединить
git branch my-typo-fix master
git checkout my-typo-fix
с
git checkout -b my-typo-fix master
Согласно документам Git,
Указание -b приводит к созданию новой ветки, как если бы git-branch был вызван, а затем извлечен.
Кроме того, вы можете использовать git stash
(Git docs), чтобы временно сохранить ваши изменения из рабочей копии (перед переключением на исправленную ветку) и повторно применить эти изменения git stash pop
после переключения ветки обратно. Это поможет избежать конфликтов во время проверки.
Комментарии:
1. Я не знал, что вы можете добавить исходную ветку в
git checkout