Comment ajouter un commit parent avant tous les autres commits dans Git?

1

Je suis dans une situation où j'essaie de convertir un projet open source vers Git et j'ai récemment eu accès aux données historiques du projet. Cependant, j’ai déjà apporté des modifications au rapport, je souhaite donc ajouter ces premières modifications au fur et à mesure que git début de l'arbre des commits à Git. (Oui, je suis conscient que cela modifiera les SHA pour les commits ultérieurs; cela est acceptable.) Les données sont fournies sous forme d'instantanés successifs du répertoire de travail. Je veux le configurer afin que l'état du répertoire de travail pour les commits ultérieurs ne soit pas affecté (je ne veux pas fusionner les modifications).

Par exemple, si la validation initiale B ajoute des fichiers a et b dans le répertoire de travail et mon commit historique A ajoute un fichier a, Je veux faire un nouveau commit B' parenté de A qui ajoute un fichier b seulement. À la fois B et B', le répertoire de travail a la même apparence, et les commits ultérieurs au-dessus de B peut être rebasé en toute sécurité sur B'.

Est-il possible de faire cela dans Git? Si c'est le cas, comment?

Modifier: Notez que je dois modifier le commit initial. L’utilisation standard de git commit ajoute un nouveau commit en tant qu'enfant du HEAD commit, et ne fonctionne donc pas pour le commit initial, qui n’a pas de parent.

Mario Carneiro
la source

Réponses:

5

Quelque chose comme ça devrait marcher.

# 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
punchagan
la source
0

Je ne suis pas sûr qu'il soit possible de faire:

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

Puis fusionnez les modifications

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

ensuite

git push

Si cela ne fonctionne pas, alors je pense qu'il n'y a aucun moyen d'y parvenir.

Ari Malinen
la source
1
Bien sûr, vous pouvez le faire, mais cela ajoutera les anciens commits à la fin de l’arbre, pas au début.
Mario Carneiro