Ответ 1
Если еще не зафиксировано нигде (git status
показывает кучу модифицированного материала, это нормально, если он также добавляет "git add" -ed):
$ git checkout -b newbranch
Несмотря на checkout
имени, это использование (с -b
) ничего не проверяет. Флаг -b
говорит: "Создайте новую ветку", поэтому git создает имя ветки и делает ее соответствующей текущей фиксации HEAD
. Затем он заставляет HEAD
указывать на новую ветку и останавливается там.
Следовательно, ваша следующая фиксация на newbranch
, которая имеет в качестве родительского обязательства фиксацию, когда вы начали изменять файлы. Итак, если вы были на master
, и у вас были эти коммиты:
A - B - C <-- HEAD=master
checkout -b
делает следующее:
A - B - C <-- master, HEAD=newbranch
и более поздняя фиксация добавляет новый фиксатор D
:
A - B - C <-- master
\
D <-- newbranch