Если вы еще не сделали ни одного коммита, достаточно будет только (1: ветка) и (3: извлечение).
Или в одной команде:git checkout -b newBranch
Как упоминалось в git reset
справочной странице :
$ git branch topic/wip # (1)
$ git reset --hard HEAD~3 # (2) NOTE: use $git reset --soft HEAD~3 (explanation below)
$ git checkout topic/wip # (3)
- Вы сделали некоторые коммиты, но понимаете, что они были преждевременны, чтобы быть в "
master
" ветке. Вы хотите продолжить полировать их в ветке темы, поэтому создайте topic/wip
ветку " " из текущей HEAD
.
- Перемотайте
master
ветку, чтобы избавиться от этих трех коммитов.
- Переключитесь на "
topic/wip
" ветку и продолжайте работать.
Примечание: из-за «разрушительного» эффекта git reset --hard
команды (она сбрасывает индекс и рабочее дерево. Любые изменения в отслеживаемых файлах в рабочем дереве, так как <commit>
они отбрасываются), я бы предпочел:
$ git reset --soft HEAD~3 # (2)
Это позволит убедиться, что я не потеряю приватный файл (не добавленный в индекс). Вариант не будет касаться индексного файла , ни рабочего дерева на всех (но сбрасывает голова к , так же , как все режимы делают).
--soft
<commit>
С Git 2.23+ , то новая командаgit switch
создаст филиал в одной строке (с тем же рода reset --hard
, так что берегитесь его действия):
git switch -f -c topic/wip HEAD~3