#git #github
#git #github
Вопрос:
Я думал, что git у меня довольно хорошо обработан, но я немного зашел в тупик с этой проблемой.
Вот картинка: я разветвил ветку «разработка» из проекта в свое собственное репозиторий github, клонировал в local, создал функцию git-flow, сделал материал и опубликовал. Все в порядке.
Тем временем исходный проект изменился на новую ветку разработки (назовем ее develop2), поэтому моя опубликованная функция не могла быть включена в основной проект.
Итак, совет — я создал локальную ветку ‘develop2’, удалил свою локальную ветку ‘development’, извлек ‘develop2’ из основного репозитория проекта, а затем объединил это с моей локальной функцией. Все в порядке, ЗА ИСКЛЮЧЕНИЕМ … в моем личном репозитории github все еще есть старая ветка «разработка» и функция, основанная на этой ветке.
Итак, мой вопрос в том, что мне теперь делать? Несколько вариантов, которые я рассмотрел:
- Полностью удалите мой форк «разработка» на github, разветвите «develop2» из основного проекта, затем перенесите это в мое локальное репозиторий и объедините, затем снова опубликуйте мою функцию и отправьте запрос на извлечение. (Неопределенность: нужно ли мне клонировать, а не вытаскивать новую вилку, чтобы она имела правильное происхождение ..)
- Удалите ветку «разработка» в источнике и функции, нажмите новую ветку develop2 и так далее
- Принудительно переместите мою ветку ‘develop2’ в origin develop, затем переименуйте ее и проделайте то же самое с функцией..
Если что-то пойдет не так, я могу застрять в необходимости переделывать кучу вещей, что было бы, мягко говоря, утомительно. есть какие-нибудь советы от гуру?
Ответ №1:
Вам абсолютно не нужно переделывать материал — Git хорошо оснащен для решения подобных проблем.
Во-первых, форки на GitHub — это весь репозиторий, поэтому удаление вашего «форка разработки» на самом деле ничего не значит — вам просто нужно внести develop2
изменения в свой форк. Я предлагаю добавить удаленный вызов upstream
, чтобы легко извлекать изменения из репозитория, из которого я разветвлялся.
Теперь, предполагая, что вы добавили upstream
, a git fetch
должен переместиться upstream/develop2
в ваш локальный репозиторий. Я бы отменил ваше слияние (вероятно git reset --hard develop~
), создал develop2
оттуда ветку для согласованности, а затем переназначил ваши локальные develop2
изменения на upstream/develop2
: git rebase --onto upstream/develop2 upstream/develop develop
.
Перед:
X---Y---Z upstream/develop2
/
| H---I---J develop, develop2
| /
| E---F---G upstream/develop
|/
A---B---C---D
После:
H'--I'--J' develop2
/
X---Y---Z upstream/develop2
/
| H---I---J develop
| /
| E---F---G upstream/develop
|/
A---B---C---D
Комментарии:
1. Спасибо — Да, это имеет смысл. Но я думаю, что нашел ответ ito. приведение моего репозитория github в соответствие с моим локальным. В основном мой вариант 2 выше, но с небольшой детализацией github. Страница здесь: matthew-brett.github.com/pydagogue/gh_delete_master.html Вкратце: 1. git push origin develop2 (новая ветка разработчика до репозитория github) 2. Перейдите в репозиторий github, нажмите «Admin», установите ветку по умолчанию на develop2 3. Затем можно удалить старую ветку разработки ie. git push origin: разработка 4. Затем нажмите feature up как обычно.