Я с готовностью нырнул в режим кода и модифицировал некоторые файлы, но сначала отказался от перехода от мастера. Моды не настолько обширны, что я не могу их переделать, но какой хороший способ взять мой (пока что незафиксированный) изменить мастер и перенести их в новую ветку, оставив в конечном итоге мастер нетронутым?
Забыл в ветку в git, нужно переместить изменения с мастера
Ответ 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
Ответ 2
git stash
git stash branch <branchname>
Ответ 3
git branch -M master my-branch
а потом
git fetch origin refs/heads/master:refs/heads/master
или
git branch master my-branch (or another ref)