Scinder un dépôt git en deux
· 1.5 KiB · Text
Raw
# Scinder un dépôt en deux dépôts distincts
## Nomenclature
+ `OLD_REPO` : nom de l'ancien dépôt à scinder
+ `NEW_REPO_1` : nom du nouveau premier dépôt
+ `NEW_REPO_2` : nom du nouveau second dépôt
+ `OLD_REPO_DIR_1` : nom du dossier qui deviendra `NEW_REPO_1`
+ `OLD_REPO_DIR_2` : nom du dossier qui deviendra `NEW_REPO_2`
+ `TEMP_BRANCH_1` : nom de la branche temporaire de `OLD_REPO` dans laquelle on va "cloner" `OLD_REPO_DIR_1`
+ `TEMP_BRANCH_2` : nom de la branche temporaire de `OLD_REPO` dans laquelle on va "cloner" `OLD_REPO_DIR_12`
## Préparer l'ancien dépôt
```
$ git clone <url/git/vers/OLD_REPO.git>
$ git subtree split --prefix OLD_REPO_DIR_1 -b TEMP_BRANCH_1
$ git subtree split --prefix OLD_REPO_DIR_2 -b TEMP_BRANCH_2
```
## Préparer les futurs dépôts
Sur le serveur git créer les futurs dépôts `NEW_REPO_1` et `NEW_REPO_2`.
## Initialiser les futurs dépôts
```
$ mkdir <chemin/vers/NEW_REPO_1>
$ cd <chemin/vers/NEW_REPO_1>
$ git init --initial-branch=main
$ git pull <chemin/vers/OLD_REPO> TEMP_BRANCH_1
$ git remote add origin <url/git/vers/NEW_REPO_1>
$ mkdir <chemin/vers/NEW_REPO_2>
$ cd <chemin/vers/NEW_REPO_2>
$ git init --initial-branch=main
$ git pull <chemin/vers/OLD_REPO> TEMP_BRANCH_2
```
## Mettre à jour les dépôts git distants
```
$ git remote add origin <url/git/vers/NEW_REPO_1>
$ git push --set-upstream origin --all
$ git push --set-upstream origin --tags
$ git remote add origin <url/git/vers/NEW_REPO_2>
$ git push --set-upstream origin --all
$ git push --set-upstream origin --tags
```
| 1 | # Scinder un dépôt en deux dépôts distincts |
| 2 | |
| 3 | ## Nomenclature |
| 4 | |
| 5 | + `OLD_REPO` : nom de l'ancien dépôt à scinder |
| 6 | + `NEW_REPO_1` : nom du nouveau premier dépôt |
| 7 | + `NEW_REPO_2` : nom du nouveau second dépôt |
| 8 | + `OLD_REPO_DIR_1` : nom du dossier qui deviendra `NEW_REPO_1` |
| 9 | + `OLD_REPO_DIR_2` : nom du dossier qui deviendra `NEW_REPO_2` |
| 10 | + `TEMP_BRANCH_1` : nom de la branche temporaire de `OLD_REPO` dans laquelle on va "cloner" `OLD_REPO_DIR_1` |
| 11 | + `TEMP_BRANCH_2` : nom de la branche temporaire de `OLD_REPO` dans laquelle on va "cloner" `OLD_REPO_DIR_12` |
| 12 | |
| 13 | ## Préparer l'ancien dépôt |
| 14 | |
| 15 | ``` |
| 16 | $ git clone <url/git/vers/OLD_REPO.git> |
| 17 | $ git subtree split --prefix OLD_REPO_DIR_1 -b TEMP_BRANCH_1 |
| 18 | $ git subtree split --prefix OLD_REPO_DIR_2 -b TEMP_BRANCH_2 |
| 19 | ``` |
| 20 | |
| 21 | ## Préparer les futurs dépôts |
| 22 | |
| 23 | Sur le serveur git créer les futurs dépôts `NEW_REPO_1` et `NEW_REPO_2`. |
| 24 | |
| 25 | ## Initialiser les futurs dépôts |
| 26 | |
| 27 | ``` |
| 28 | $ mkdir <chemin/vers/NEW_REPO_1> |
| 29 | $ cd <chemin/vers/NEW_REPO_1> |
| 30 | $ git init --initial-branch=main |
| 31 | $ git pull <chemin/vers/OLD_REPO> TEMP_BRANCH_1 |
| 32 | $ git remote add origin <url/git/vers/NEW_REPO_1> |
| 33 | $ mkdir <chemin/vers/NEW_REPO_2> |
| 34 | $ cd <chemin/vers/NEW_REPO_2> |
| 35 | $ git init --initial-branch=main |
| 36 | $ git pull <chemin/vers/OLD_REPO> TEMP_BRANCH_2 |
| 37 | ``` |
| 38 | |
| 39 | ## Mettre à jour les dépôts git distants |
| 40 | |
| 41 | ``` |
| 42 | $ git remote add origin <url/git/vers/NEW_REPO_1> |
| 43 | $ git push --set-upstream origin --all |
| 44 | $ git push --set-upstream origin --tags |
| 45 | $ git remote add origin <url/git/vers/NEW_REPO_2> |
| 46 | $ git push --set-upstream origin --all |
| 47 | $ git push --set-upstream origin --tags |
| 48 | ``` |