Создать ветку Git с текущими изменениями
Я начал работать над своей главной веткой, думая, что моя задача будет легкой. Через некоторое время я понял, что потребуется больше работы, и я хочу сделать всю эту работу в новой отрасли. Как я могу создать новую ветку и взять все эти изменения с собой, не загрязняя мастера?
5 ответов
если вы еще не сделали никакой фиксации, будет достаточно только (1: ветка) и (3: Проверка).
Или, в одной команде:git checkout -b newBranch
как говорится в git reset
man page:
$ 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
. - перемотать the
master
филиала, чтобы избавиться от этих трех коммитов. - переключиться на "
topic/wip
" ветвь и продолжайте работать.
Примечание: из-за "разрушительного" эффекта git reset --hard
команда (она сбрасывает индекс и рабочее дерево. Любые изменения отслеживаемых файлов в рабочем дереве с <commit>
отбрасываются), я бы предпочел пойти с:
$ git reset --soft HEAD~3 # (2)
это гарантирует, что я не потеряю ни одного частного файла (не добавленного в индекс).
The --soft
опция не будет касаться индексного файла или рабочего дерева вообще (но сбрасывает головку до <commit>
, как и все режимы).
как указано в этом вопросе:git'ом: создавать ветку из unstagged/неподтвержденными изменениями на мастер: заначка не нужна.
просто использовать:
git checkout -b topic/newbranch
любая незафиксированная работа будет перенесена в новую ветку.
Если вы попытаетесь нажать, вы получите следующее сообщение
fatal: текущая функция ветви / NEWBRANCH не имеет ветви вверх по течению. К нажмите текущую ветвь и установите remote как вверх по течению, используйте
git push --set-upstream origin feature/feature/NEWBRANCH
просто сделайте, как предложено, чтобы создать ветку удаленно:
git push --set-upstream origin feature/feature/NEWBRANCH
выполните следующие действия:
-
создать новую ветку:
git branch newfeature
-
проверка новой ветви: (это не сбросит вашу работу.)
git checkout newfeature
-
Теперь посвятите свою работу этой новой ветви:
git commit -s
использование вышеуказанных шагов будет держать вашу оригинальную ветку чистой, и вам не нужно делать "git reset --hard".
поскольку вы еще не сделали никаких коммитов, вы можете сохранить все свои изменения в тайнике, создать и переключиться на новую ветку, а затем вернуть эти изменения в свое рабочее дерево:
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
чтобы добавить новые изменения в новую ветку и нажать на remote:
git branch branch/name
git checkout branch/name
git push origin branch/name
часто я забываю добавить исходную часть, чтобы нажать и запутаться, почему я не вижу новую ветку/фиксацию в bitbucket