2016-06-13 4 views
1

Я разветвил исходный git-репозиторий (repo1), который имеет много модулей (допустим, A, B, C) и внес некоторые изменения в один из модулей (допустим, в A) в моей вилке (MyName/repo1). К тому времени я планирую вытащить свои изменения из fork в исходное репо (repo1), репозиторий origin repo был реорганизован, и каждый модуль теперь представляет собой git repo (repoA, repoB, repoC). Теперь я разветвил repoA и хочу сначала слить с предыдущей fork (myname/repo1 - moduleA) на эту (myname/repoA). Как я могу это сделать ?git merge from one fork to another

ответ

1

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

Первым шагом является создание нового хранилища в качестве пульта дистанционного управления. git remote add repoA url-to-repo-a и git fetch repoA.

Затем вам необходимо применить те же изменения имени файла, которые были сделаны для создания repoA в вашей ветке. Это можно сделать с помощью git filter-branch, используя --subdirectory-filter. После проверки вашего филиала запустите что-то вроде git filter-branch --subdirectory-filter moduleA/ master..HEAD. Это сделает содержимое каталога moduleA/ новым корнем. master..HEAD ограничит это изменение только вашей веткой. В целях безопасности вы можете пометить свою текущую ветвь перед запуском фильтра, чтобы у вас было легче восстановить время, если фильтр пойдет не так.

Вы должны теперь нормально слить.