Это вполне возможно сделать.
Вы можете создать ветку на основе того места, где, по вашему мнению, начался код (назовите его import
). Вы можете распаковать содержимое в рабочее дерево, перезаписать все файлы и зафиксировать. Теперь вы можете увидеть разницу между оригиналом и изменениями, используя git diff HEAD^
.
. Если вы хотите объединить эти изменения, вы можете переключиться на master
, запустить git merge import
и разрешить любые конфликты.
Если вы считаете, что допустили ошибку относительно того, на чем он основан, вы можете создать временную ветку с текущим содержимым (git branch temp import
), проверить import
, переназначить его на новый коммит (git rebase --onto NEW import^
), а затем сбросьте ветвь до исходного значения (git reset --hard temp
). Это обеспечивает быстрый и простой способ найти правильного родителя, чтобы ваше слияние дало наилучший возможный результат.
В общем, вы действительно хотите попытаться найти как можно более точно, какой коммит был основан на оригинале. потому что способ слияния заключается в том, что он включает изменения, произошедшие в обеих ветвях. Знание того, какие изменения это, конечно, зависит от нахождения базы слияния, которая в этом случае является последним общим коммитом master
и import
общего (точка разветвления).