Git Newbie Ошибка - как восстановить - PullRequest
2 голосов
/ 09 мая 2009

Возможно связано с Git - перенос изменений из клона обратно на мастер

Я работал над проектом ASP.NET, когда обнаружил, что мне нужно внести «экспериментальный» набор изменений, которые могут или не могли потребоваться в рабочей версии.

Очевидное, что нужно сделать, это создать ветку.

Однако, поскольку я был знаком с darcs и svn, но не с git, я предположил, что клон был «нормальным» способом создания ветви (теперь я знаю, что git branch было бы более подходящим).

Я продолжал работать над экспериментальными изменениями в клоне и, в то же время, над другими изменениями в исходном хранилище.

С тех пор я обнаружил, что экспериментальные изменения желательны в рабочей версии и хотели бы объединить два набора изменений.

Если бы я изначально делал ветку вместо клона, это было бы тривиально. Я уверен, что нетрудно объединить отдельные репозитории, но, просмотрев документы, я не думаю, что это можно сделать с помощью одной команды (простой pull не работает.)

Я (пока) явно не настроил один репозиторий как «удаленный» для другого, но я предполагаю, что это будет частью решения.

В обратном хранилище в то время не использовались никакие VCS - это был просто каталог, полный zip с номерами версий, добавленными к именам файлов.

Итак, я хотел бы знать:

  • Какой самый простой способ объединить наборы изменений в репозитории? (Я не ожидаю каких-либо серьезных конфликтов.)
  • Насколько вредно клонировать вместо ветвления? Потерял ли я при этом какую-либо информацию, например, общая история, общие зависимости?

Ответы [ 3 ]

7 голосов
/ 09 мая 2009

В своем исходном «неразветвленном» репозитории git выполните следующие команды:

git remote add name_it_anything /path/to/the/other/git/repository
git fetch name_it_anything
git merge name_it_anything/master

Это объединит все изменения в n name_it_anything. Если вы хотите не все из них, а только выбор коммитов, вы можете git log name_it_anything/master просмотреть список коммитов, а затем git cherry-pick [SHA] для каждого из коммитов, которые вы хотите объединить.

3 голосов
/ 09 мая 2009

По второй части вашего вопроса:

Насколько вредно клонировать вместо ветвления? Потерял ли я при этом какую-либо информацию, например, общая история, общие зависимости?

Git - распределенная система контроля версий. Весь смысл DVCS - возможность объединять изменения назад и вперед между различными хранилищами.

0 голосов
/ 09 мая 2009

Я думаю, что вы можете git-format-patch в одном репозитории, а затем применить в другом. Таким образом, вся важная информация сохраняется.

...