Предположим, что существует вышестоящий проект, который не использует git, и я поддерживаю кодовую базу на основе выпущенных tar-архивов этого проекта. Я поддерживаю master мерзавца филиал и мой филиал my от него. Я публикую обе ветки в публичном репозитории git. Всякий раз, когда апстрим выпускает новый основной выпуск, я создаю новый коммит на master который идентичен этому выпущенному tarball. Затем я работаю на сливая голову master в my и опубликовать обе ветви.

Теперь предположим, что апстрим наконец-то приходит в себя и публикует свой репозиторий git. Я хотел бы иметь свой master трек и стать идентичным с апстримом с этого момента истории и далее. Каков рекомендуемый курс действий? Должен ли я просто создать master-2 , идентичный восходящему, и с этого момента объединить его с my , оставив старого master?

1 ответ1

1

В вашем локальном хранилище вы можете:

  • Удалите ветку, используя git branch , а затем (если хотите) создайте новую 'master' ветку.
  • Переименуйте ветку во что-то другое, используя git branch , а затем при необходимости создайте новую.
  • Непосредственно перенаправьте ветку 'master' на любой коммит, который вы хотите, используя git branch или git reset .

Для удаленного хранилища вы можете:

  • Удалите ветку (нажмите на удаление), используя git push --delete .
  • Замените ветку любым коммитом, который вы хотите, используя git push --force .

Если вы сделаете это с удаленным репозиторием, который используется другими людьми или системами:

  • Если вы используете другое имя, другие люди могут легко git checkout новую ветку, но они могут не заметить изменения и запутаться, почему там внезапно нулевая активность в «мастере» ветвь.
  • Если вместо этого вы поместите другую историю в одну и ту же ветку 'master', все заметят это - но в зависимости от версии git и команды обновления, которую они использовали, она либо остановится с сообщением об ошибке (требующим некоторой ручной очистки), либо попытается объединиться обе истории (требующие дополнительной ручной очистки).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .