Что если вы забудете создать новую ветку Git? - PullRequest
0 голосов
/ 10 октября 2018

У меня есть три сервера: разработка, подготовка и производство.У меня всегда есть три соответствующие ветки Git, dev, staging и master.Недавно я создал новую функциональную ветку и отправил ее в производство.Затем вчера я начал работать над другой новой функцией, но я забыл удалить старую ветку "новая функция" и начать эту новую работу в новой ветке функции.В результате моя новая работа выполняется в той же ветке, которую я использовал для реализации предыдущей функции.Это кажется "нечистым" для меня.Я хочу свою новую работу в новой ветке функций.Каков предпочтительный процесс Git для перемещения этой новой работы в новую функциональную ветку?

Вот мой рабочий процесс:

  1. Я начинаю с моих ветвей dev, staging и master.все идентичны.Затем я создаю новую ветвь функции:

    git checkout -b new-feature dev
    
  2. После того, как я построил новую функцию, я объединяю ее с моей промежуточной веткой, отправляю обновленный код на свой промежуточный сервер и тестирую еготам.

  3. Если все мои тесты пройдены, я сливаю новую ветвь функций в свою ветку dev.

  4. Затем я объединяю свою ветку devв мою основную ветку и перенесите эту основную ветку на мой рабочий сервер.

На этом этапе все четыре ветви идентичны, и я обычно удаляю ветвь с новыми функциями и извлекаю новуюветка с новыми функциями от dev.Но я забыл это сделать.

Будет ли предпочтительный способ переместить мои измененные файлы в новую ветку новых функций?

    git checkout -b newer-new-feature older-new-feature
    git push origin --delete older-new-feature
    git br --delete older-new-feature

Кстати, я хочу сохранить историю ответка old-new-feature в ветке newer-new-feature.

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Перенесите ваши изменения в новую ветку функций:

git checkout -b feature-new feature-old
git rebase --onto production <branch-point>

Используйте gitk, чтобы получить <branch-point> (там, где вы начали реализовывать новую функцию).

0 голосов
/ 10 октября 2018

На этом этапе все четыре ветви идентичны, и я обычно удаляю ветку new-feature и проверяю более новую ветку new-feature из dev.Но я забыл это сделать.

Git не заботится о названиях ваших веток, они просто указатели на коммиты.Предполагая, что приведенное утверждение верно, ваш подход совершенно верен.

0 голосов
/ 10 октября 2018

Самый простой способ - запустить новую ветку из вашей основной ветки (или того, что вы хотите использовать в качестве базы в качестве своей функции) и выбрать те ревизии, которые вы сделали «в неправильной ветке».Затем вы можете настроить другую ветвь объекта так, чтобы она находилась там, где она должна быть (потому что она перемещалась с коммитами новой функции, верно?).Предполагая, что вы использовали 3 ревизии для новой функции:

git checkout -b new-feature origin/master
git cherry-pick old-feature~3..old-feature
git branch -f old-feature old-feature~3

Надеюсь, она работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...