Git создать ветку из текущего проверенного мастера?


на сервере есть управляемая git папка, где основная ветвь извлечена, и целая куча файлов была изменена и не зафиксирована. Есть ли способ для меня зафиксировать изменения в отдельной ветке, чтобы я мог вернуться к чистой версии?

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

(Да, я знаю, что это не так, как git разработан но это моя ситуация!) Любые идеи очень ценятся.

3 75

3 ответа:

прежде всего перемещение в другую ветвь на основе текущей головки выполняется следующим образом:

git checkout -b newbranch

зафиксировать все изменения (при условии отсутствия новых добавленных файлов, в противном случае git add них):

git commit -a

вернитесь в главную ветвь:

git checkout master

все ранее незафиксированные изменения будут находиться в ветке newbranch, а master будет по-прежнему находиться в состоянии, в котором он был без этих изменений.

этот метод полезен:

git checkout -B <new_branch> <start point>

где:

  • <new_branch> это Ваша новая ветвь (например my_branch)
  • <start point> - Это ваша отправная филиала (master в вашем случае)
  • -B создает новую ветку, начиная с <start point>, если он уже существует, то сбросьте его (он не потерпит неудачу как -b когда ветка уже существует)
  • иногда -m может полезно указать при переключении ветвей, это будет выполнять трехстороннее слияние между текущей ветвью, содержимым вашего рабочего дерева (полезно для сценариев).

посмотреть: man git-checkout для более подробной информации.

вы всегда можете спрятать ваши изменения.

git stash
git checkout -b bravenewmaster
git stash apply

также имейте в виду, что если вы зафиксируете "неправильную" ветвь, вы всегда можете переместить эту ветвь обратно, потому что ветвь-это не что иное, как указатель на фиксацию.