Создать ветку 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)
  1. вы сделали некоторые коммиты, но понимаете, что они были преждевременными, чтобы быть в "master филиал". Вы хотите продолжить полировку их в ветке темы, поэтому создайте"topic/wip" ответвление от текущего HEAD.
  2. перемотать the master филиала, чтобы избавиться от этих трех коммитов.
  3. переключиться на "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


выполните следующие действия:

  1. создать новую ветку:

    git branch newfeature
    
  2. проверка новой ветви: (это не сбросит вашу работу.)

    git checkout newfeature
    
  3. Теперь посвятите свою работу этой новой ветви:

    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