Дополнительно
Как заменить ветку master в Git'е, полностью, из другой ветки?
Возможный дубликат:
Сделать текущую ветку Git'а мастер-веткой
У меня есть две ветки в моем репозитории Git:
master
.seotweaks
(создана изначально изmaster
)
Я создал seotweaks
с намерением быстро слить ее обратно в master
. Однако это было три месяца назад, и код в этой ветке опережает master
на 13 версий.
Она фактически стала нашей рабочей мастер-веткой, поскольку весь код в master
уже более или менее устарел.
Очень плохая практика, я знаю, урок усвоен.
Вы знаете, как я могу заменить все содержимое ветки master
на содержимое ветки seotweaks
?
Я мог бы просто удалить все в master
и слиться, но это не похоже на лучшую практику.
1540
5
Вы должны иметь возможность использовать стратегию "нашего" слияния для перезаписи master с такими seotweaks:
В результате ваш мастер должен стать по сути seotweaks.
(
-s ours
- это сокращение от--strategy=ours
)Из документации о 'нашей' стратегии:
Обновление из комментариев: Если вы получаете фатальное:
отказ в слиянии несвязанных историй
, то измените вторую строку на следующую: gitmerge --allow-unrelated-histories -s ours master
.Как насчет использования git branch -m для переименования ветки master в другую, а затем переименования ветки seotweaks в master? Что-то вроде этого:
Это может удалить коммиты в origin master, пожалуйста, проверьте ваш origin master перед запуском
git push -f origin master
.Вы можете переименовать/удалить master на remote, но это будет проблемой, если многие люди основывали свою работу на удалённой ветке master и использовали эту ветку в своём локальном репо.
В данном случае это может быть не так, поскольку все, похоже, работают над веткой '
seotweaks
'.В этом случае вы можете:
git remote --show может не работать. (Сделайте
git remote show
, чтобы проверить, как объявлен ваш пульт в вашем локальном репозитории. Я буду считать, что 'origin
')(Что касается GitHub, house9 комментирует: "Мне пришлось сделать один дополнительный шаг, нажать кнопку '
Admin
' на GitHub и установить 'Default Branch
' на что-то другое, кроме 'master
', а затем вернуть все обратно").Но опять же:
reset --hard
их локального мастера на ветку remote/master, которую они будут собирать, и забыть о своем текущем мастере.Поскольку
seotweaks
изначально был создан как ветка изmaster
, объединение его обратно - хорошая идея. Однако, если вы находитесь в ситуации, когда одна из ваших ветвей на самом деле не является веткой отmaster
или ваша история настолько отличается, что вы просто хотите стереть веткуmaster
в пользу новой ветки, которую вы 'Мы делаем работу над вами, вы можете сделать это:Это особенно полезно, если вы получаете эту ошибку:
И вы не используете GitHub и не имеете доступа к вкладке «Администрация», чтобы изменить ветку по умолчанию для вашего удаленного репозитория. Кроме того, это не приведет к потере времени или условий гонки, с которыми вы можете столкнуться, удалив master:
Я обнаружил, что это лучший способ сделать это (у меня была проблема с моим сервером, который не позволял мне удалять).
На сервере, на котором размещен репозиторий
origin
, введите следующее из каталога внутри репозитория:На вашей рабочей станции:
Вернуться на сервер, на котором находится репозиторий
origin
:Предоставлено автором сообщения в блоге http://www.mslinn.com/blog/?р = 772