Создайте ветвь Git с текущими изменениями

Я начал работать над своей основной веткой, думая, что моя задача будет легкой. Через некоторое время я понял, что потребуется больше работы, и я хочу сделать всю эту работу в новой отрасли. Как я могу создать новую ветку и выполнить все эти изменения со мной без грязного мастера?

Ответ 1

Если вы еще не сделали какой-либо фиксации, достаточно всего (1: branch) и (3: checkout).
Или в одной команде: git checkout -b newBranch

Как указано в git reset странице man:

$ git branch topic/wip     # (1)
$ git reset --hard HEAD~3  # (2)
$ git checkout topic/wip   # (3)
  • Вы совершили некоторые коммиты, но понимаете, что преждевременно находиться в ветке "master". Вы хотите продолжить их полировку в ветке темы, поэтому создайте "topic/wip" ответвление текущего HEAD.
  • Перемотайте ветвь master, чтобы избавиться от этих трех коммитов.
  • Перейдите в ветвь "topic/wip" и продолжайте работать.

Примечание: из-за "деструктивного" эффекта команды git reset --hard (он сбрасывает индекс и рабочее дерево. Любые изменения в отслеживаемых файлах в рабочем дереве с <commit> отбрасываются), я бы предпочел пойти с а:

$ git reset --soft HEAD~3  # (2)

чтобы убедиться, что я не теряю личный файл (не добавляется в индекс).
Параметр --soft не будет касаться индексного файла или рабочего дерева вообще (но сбрасывает голову на <commit>, как и все режимы).

Ответ 2

Как указано в этом вопросе: Git: создать ветку из немаркированных/неактивных изменений в главном файле: stash не требуется.

Просто используйте:

git checkout -b topic/newbranch

Любая свободная работа будет перенесена в новую ветвь.

При совершении вы получите следующее сообщение

фатальный: текущая функция ветвления /NEWBRANCH не имеет восходящей ветки. к нажмите текущую ветвь и установите пульт как вверх по течению, используйте

git push --set-upstream origin feature/feature/NEWBRANCH

Просто сделайте так, как вам предлагалось удаленно создавать ветку:

git push --set-upstream origin feature/feature/NEWBRANCH

Ответ 3

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

  • Создайте новую ветку:

    git branch newfeature
    
  • Оформить новую ветку: (это не будет reset твоя работа.)

    git checkout newfeature
    
  • Теперь выполните свою работу над этой новой ветвью:

    git commit -s
    

Использование вышеперечисленных шагов позволит сохранить исходную ветвь чистой, и вам не нужно делать никаких "git reset --hard".

Ответ 4

Так как вы еще не совершили никаких коммитов, вы можете сохранить все свои изменения в stash, создать и переключиться на новую ветку, а затем вернуть эти изменения в свое дерево:

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

Ответ 5

Чтобы добавить новые изменения в новую ветку и нажать на удаленный:

git branch branch/name
git checkout branch/name
git push origin branch/name

Часто я забываю добавить исходную часть, чтобы нажать и запутаться, почему я не вижу новую ветвь/фиксацию в битбакет