1

Я нахожусь в ситуации, когда я пытаюсь преобразовать проект с открытым исходным кодом в Git, и недавно я получил доступ к историческим данным для проекта. Однако я уже внес изменения в репозиторий, поэтому хочу добавить эти ранние изменения по мере того, как git фиксирует в начале дерева коммитов в Git. (Да, я знаю, что это изменит SHA для последующих коммитов; это приемлемо.) Данные предоставляются в виде последовательных снимков рабочего каталога. Я хочу настроить его так, чтобы состояние рабочего каталога для последующих коммитов не затрагивалось (я не хочу объединять изменения в).

Например, если начальный коммит B добавляет файлы a и b в рабочий каталог, а мой исторический коммит A добавляет файл a , я хочу сделать новый коммит B' родившийся из A который добавляет только файл b . И в B и в B' рабочий каталог выглядит одинаково, и любые последующие коммиты поверх B могут быть безопасно перебазированы в B' .

Возможно ли сделать это в Git? Если так, то как?

Изменить: Обратите внимание, что мне нужно изменить первоначальный коммит. Стандартное использование git commit добавляет новый коммит как дочерний элемент HEAD commit, и поэтому не работает для начального коммита, у которого нет родителя.

2 ответа2

5

Нечто подобное должно работать.

# Create a new branch with the old history
$ git checkout --orphan old-history    
$ git add <old-files>
$ git commit

# Rebase master on top of the branch with old-history
$ git checkout master
$ git pull --rebase . old-history
0

Я не уверен, если это возможно просто сделать:

git add [files]
git commit -m 'first commit'

Затем объединить изменения

git add [files]
git commit -m 'second commit'

затем

git push

Если это не работает, то я думаю, что нет никакого способа достичь этого.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .