Git создать ветку из текущего выбранного мастера?
Существует управляемая папка git на сервере, на котором выгружается основная ветка, и целая куча файлов была изменена и не зафиксирована. Есть ли способ для меня внести изменения в отдельную ветку, чтобы я мог вернуться к чистой версии?
т.е. я хочу эффективно отменить все эти изменения людей, но сохранить их в другой шанс, поэтому, если этот человек хочет их изменения, они могут переключиться на эту ветвь.
(Да, я знаю, что это не то, как git предназначен для работы, но это моя ситуация!) Любые идеи очень ценятся.
Ответы
Ответ 1
Прежде всего переход на другую ветку, основанную на текущей HEAD, выполняется следующим образом:
git checkout -b newbranch
Зафиксируйте все изменения (при отсутствии новых добавленных файлов, иначе git add
их):
git commit -a
Вернитесь к главной ветке:
git checkout master
Предыдущие незафиксированные изменения будут находиться в ветке newbranch, и мастер все равно будет находиться в состоянии, в котором он был без этих изменений.
Ответ 2
Вы всегда можете сохранить ваши изменения.
git stash
git checkout -b bravenewmaster
git stash apply
Также имейте в виду, что если вы передаете "неправильную" ветку, вы всегда можете переместить эту ветку назад, потому что ветка - это не что иное, как указатель на фиксацию.
Ответ 3
Этот метод полезен:
git checkout -B <new_branch> <start point>
Где:
-
<new_branch>
- это ваша новая ветвь (например, my_branch
)
-
<start point>
является вашей начальной ветвью (master
в вашем случае)
-
-B
создает новую ветку, начиная с <start point>
, если она уже существует, а затем reset она (она не будет работать как -B
, когда ветвь уже существует)
- Иногда
-m
может быть полезно указать при переключении ветвей, это будет выполнять трехстороннее слияние между текущей ветвью, содержимым рабочего дерева (полезно для сценариев).
Подробнее см. < <29 > .