Я начал работать над своей основной веткой, думая, что моя задача будет легкой. Через некоторое время я понял, что потребуется больше работы, и я хочу сделать всю эту работу в новой отрасли. Как я могу создать новую ветку и выполнить все эти изменения со мной без грязного мастера?
Создайте ветвь Git с текущими изменениями
Ответ 1
Если вы еще не сделали какой-либо фиксации, достаточно всего (1: branch) и (3: checkout).
Или в одной команде: git checkout -b newBranch
Как указано в git reset
странице man:
$ git branch topic/wip # (1)
$ git reset --hard HEAD~3 # (2)
$ git checkout topic/wip # (3)
- Вы совершили некоторые коммиты, но понимаете, что преждевременно находиться в ветке "
master
". Вы хотите продолжить их полировку в ветке темы, поэтому создайте "topic/wip
" ответвление текущегоHEAD
. - Перемотайте ветвь
master
, чтобы избавиться от этих трех коммитов. - Перейдите в ветвь "
topic/wip
" и продолжайте работать.
Примечание: из-за "деструктивного" эффекта команды git reset --hard
(он сбрасывает индекс и рабочее дерево. Любые изменения в отслеживаемых файлах в рабочем дереве с <commit>
отбрасываются), я бы предпочел пойти с а:
$ git reset --soft HEAD~3 # (2)
чтобы убедиться, что я не теряю личный файл (не добавляется в индекс).
Параметр --soft
не будет касаться индексного файла или рабочего дерева вообще (но сбрасывает голову на <commit>
, как и все режимы).
Ответ 2
Как указано в этом вопросе: Git: создать ветку из немаркированных/неактивных изменений в главном файле: stash не требуется.
Просто используйте:
git checkout -b topic/newbranch
Любая свободная работа будет перенесена в новую ветвь.
При совершении вы получите следующее сообщение
фатальный: текущая функция ветвления /NEWBRANCH не имеет восходящей ветки. к нажмите текущую ветвь и установите пульт как вверх по течению, используйте
git push --set-upstream origin feature/feature/NEWBRANCH
Просто сделайте так, как вам предлагалось удаленно создавать ветку:
git push --set-upstream origin feature/feature/NEWBRANCH
Ответ 3
Выполните следующие действия:
-
Создайте новую ветку:
git branch newfeature
-
Оформить новую ветку: (это не будет reset твоя работа.)
git checkout newfeature
-
Теперь выполните свою работу над этой новой ветвью:
git commit -s
Использование вышеперечисленных шагов позволит сохранить исходную ветвь чистой, и вам не нужно делать никаких "git reset --hard".
Ответ 4
Так как вы еще не совершили никаких коммитов, вы можете сохранить все свои изменения в stash, создать и переключиться на новую ветку, а затем вернуть эти изменения в свое дерево:
git stash # save local modifications to new stash
git checkout -b topic/newbranch
git stash pop # apply stash and remove it from the stash list
Ответ 5
Чтобы добавить новые изменения в новую ветку и нажать на удаленный:
git branch branch/name
git checkout branch/name
git push origin branch/name
Часто я забываю добавить исходную часть, чтобы нажать и запутаться, почему я не вижу новую ветвь/фиксацию в битбакет