|
|
|
Объединение двух GIT репозиториев |
|
|
|
Dec 21 2015, 08:42
|
Участник
Группа: Участник
Сообщений: 33
Регистрация: 13-04-09
Пользователь №: 47 609
|
Предыстория такова: работал с svn, коммитил туда проект. Потом перешел на git, стал коммитить на другой сервер. Теперь смог затянуть из svn коммиты в git репозиторий. Таким образом получил 2 git репозитория, один начало проекта, второй - конец. Попробовал слить конец первого с началом второго, нарешал кучу конфликтов, но репозитории так и не объединились. Может кто сталкивался, как объединить репозитории?
|
|
|
|
|
Dec 21 2015, 11:31
|
Участник
Группа: Участник
Сообщений: 33
Регистрация: 13-04-09
Пользователь №: 47 609
|
Цитата(Le Fou @ Dec 21 2015, 14:25) кстати, а что конкретно вас побудило к переходу на Git? Удобство работы с ветками и слепок сервера на локальной машине. Первое удобно для мелких экспериментов, что бы не засорять директорию проекта. Второе удобно при работе в "поле", в любой момент доступны все коммиты с сервера без подключения к серверу. Сейчас у нас есть огромный проект (по факту это движек, который конфигурируется с помощью кучи дефайнов под конкретную задачу), работаем над ним втроем. Двое вбивают конфигурацию под свою задачу, третий прибивает какой-то баг, как пример. Каждый работает в своей ветке, когда приходит время, то наработки сливаются в основную стабильную ветку. Кода бывает очень много в разных местах, как это сделать с помощью других инструментов даже не могу представить. За ссылку спасибо, вроде так и делал. Попробую еще раз.
|
|
|
|
|
Dec 21 2015, 13:04
|
Частый гость
Группа: Validating
Сообщений: 83
Регистрация: 22-09-07
Из: Санкт-Петербург, Россия
Пользователь №: 30 747
|
Я просто, хоть и переключился на Git вслед за командой, не вкурил пока в чем цимес. Цитата(Neborak @ Dec 21 2015, 14:31) Удобство работы с ветками Первое удобно для мелких экспериментов, что бы не засорять директорию проекта. ну.. пожалуй. Цитата Второе удобно при работе в "поле", в любой момент доступны все коммиты с сервера без подключения к серверу. Типа, в поле нужно посмотреть кто где налажал десять коммитов тому назад, пофиксить, и при этом нет доступа к серверу? наверное бывает, но в целом плохая ситуация. Цитата Каждый работает в своей ветке, когда приходит время, то наработки сливаются в основную стабильную ветку. Кода бывает очень много в разных местах, как это сделать с помощью других инструментов даже не могу представить. Проблема, видимо, в том что сервер может быть недоступен. Пока репа на связи -- в SVN мне кажется это ничуть не сложнее. Занятно, что главным преимуществом в эпоху облаков и прочего оказалась отвязка от сервера ))
|
|
|
|
|
Dec 21 2015, 13:56
|
Участник
Группа: Участник
Сообщений: 33
Регистрация: 13-04-09
Пользователь №: 47 609
|
В общем получилось с помощью Rebase. Большой проблемой стало то, что первый коммит в новом репозитории сделан с правками, т.е. не соответствовал последнему коммиту в старом. Из-за этого было много конфликтов. Выкрутился так, старый клонировал, сделал в нем состояние, которое было как в первом коммите нового репозитория, сделал коммит и принудительно указал промежуточную дату в диапазоне между последним в старом и первым в новом репозитории. Таким образом получил общего предка. А дальше git все сделал сам.
По поводу gitа, первое преимущество ощутил, что ну нужно сидеть что-то синхронизировать с сервером, пока не сделаешь push все коммиты остаются локальными, только сделанную часть работы выкладываешь на сервер или ту, которую нужно перенести на ноутбук. Второе, работаешь над новым функционалом, неделя-две, прибегают, видите ли, светодиод хотят что бы не мигал, а светился постоянно. Делаю коммит, переключаюсь в последний релиз (метки тоже удобно использовать), создаю свою ветку, правлю, отдаю прошивку, жду результат, если все ок, то сливаю изменения в мастер. В SVN без подключения к серверу я бы ничего этого не сделал бы.
|
|
|
|
|
Dec 22 2015, 10:24
|
Adept
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343
|
QUOTE (Le Fou @ Dec 21 2015, 19:04) не вкурил пока в чем цимес. Ветки! И всё, что они дают. А именно: возможность в любой момент делать что угодно без опасности потерять или сломать имеющееся. Удобство переключения состояния проекта в текущей рабочей директории - на svn ветки - это директории, соответственно, при переходе к ветке, нужно менять рабочую директорию. Т.к. репозиторий локальный, то все операции происходят очень быстро. Вот хороший пример методологии использования, рекомендую. По поводу удалённого сервера хочется предостеречь: поначалу кажется (особенно, когда довлеет опыт работы с VCS с центральным репозиторием), что распределённая система - это просто куча клонов (слепков, копий) одного и того же репозитория. На самом деле это не так. Удалённый репозиторий - это не средство для резервного копирования, удалённый репозиторий - это способ публикации и обмена данными. На удалённый сервер пушатся не все локальные ветки, а только общие и публичные. Резервное копирование - это отдельная тема, и делается оно своими способами.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Dec 23 2015, 09:05
|
Участник
Группа: Участник
Сообщений: 33
Регистрация: 13-04-09
Пользователь №: 47 609
|
Цитата(dxp @ Dec 22 2015, 14:24) По поводу удалённого сервера хочется предостеречь: поначалу кажется (особенно, когда довлеет опыт работы с VCS с центральным репозиторием), что распределённая система - это просто куча клонов (слепков, копий) одного и того же репозитория. На самом деле это не так. Удалённый репозиторий - это не средство для резервного копирования, удалённый репозиторий - это способ публикации и обмена данными. На удалённый сервер пушатся не все локальные ветки, а только общие и публичные. Резервное копирование - это отдельная тема, и делается оно своими способами. А удавалось работать не через сервер, а с коллегой напрямую, как пишут "когда двое людей работают над одной и той же проблемой они могу брать наработки друг у друга"? Я такую фишку пробовал реализовать для синхронизации с ноутбуком. Шарил папку с проектом, но на ноут можно клонировать и фэтчить, запушить на основной нельзя. Или нужно, например, на ноуте клонировать, сделать правки, сделать коммит, а на основном компьютере подключить еще один репо со ссылкой на ноут? Не нравится, что нужно шарить папку с проектом. Или без открытия сетевого доступа как-то можно?
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|