Git поддерживает обнаружение переименования файлов, поэтому, если вам повезет, он поможет вам в этом. Ниже приведен примерный проект того, что вы должны сделать.
Импорт оригинальной версии:
tar zxvf open-source-project-0.1.tar.gz
mv open-source-project-0.1 open-source-project
cd open-source-project
git init
git add .
git commit -m "Initial checkin of open-source-project-0.1"
git tag open-source-project-0.1
Теперь вы можете применить свои оригинальные изменения в отдельной ветке:
git checkout -b mychanges
cp /somewhere/where/your/changes/files/are/* .
git diff
git add .
git commit -m "My changes"
git tag my_changes_001
Затем вы обновляетесь до более новой версии:
git checkout master
tar zxvf open-source-project-0.2.tar.gz
mv open-source-project-0.2/* .
rmdir open-source-project-0.2
git add .
git commit -m "Update to open-source-project-0.2"
git tag open-source-project-0.2
Пока все проверено в репозитории git, сейчас самое время попытаться объединить ваши изменения:
git checkout -b merge_test open-source-project-0.2
git pull . my_changes_001
Удачи ...
Если вы хотите объединить файлы вручную, я настоятельно рекомендую использовать KDiff3 . Предполагая, что file1.c из open-source-project-0.1, file2.c из open-source-project-0.2 и file3.c из ваших изменений, запустите
kdiff3 -o merged_file.c file1.c file2.c file3.c