102 votes

Comment créer un nouveau dépôt git à partir d'un dépôt existant

J'ai un dépôt git distant qui a vraiment remplacé tout ce que nous avions dans un autre ancien SCM. De nombreux projets et produits ont été ajoutés au dépôt au fil des ans.

Il y a une branche dans ce dépôt, correspondant à un produit qui m'intéresse. Je veux créer un tout nouveau dépôt git à partir de cette branche seulement, sans vraiment me soucier de la perte d'historique.

Est-ce que git remote add est la solution? Je veux que ces deux dépôts soient sur le même serveur.

Des idées?

106voto

pestrella Points 1982

Afin de créer un nouveau dépôt Git à partir d'un dépôt existant, on crée généralement un nouveau dépôt nue et on pousse une ou plusieurs branches du dépôt existant vers le nouveau dépôt.

Les étapes suivantes illustrent cela:

  1. Créer un nouveau dépôt. Il doit être nue pour pouvoir y pousser.

    $ mkdir /chemin/vers/nouveau_depot
    $ cd /chemin/vers/nouveau_depot
    $ git --bare init

    Note: assurez-vous que votre nouveau dépôt est accessible depuis le dépôt existant. Il existe différentes façons de le faire; supposons que vous l'ayez rendu accessible via ssh://mon_hote/nouveau_depot.

  2. Pousser une branche depuis votre dépôt existant. Par exemple, disons que nous voulons pousser la branche topic1 depuis le dépôt existant et la nommer master dans le nouveau dépôt.

    $ cd /chemin/vers/depot_existant
    $ git push ssh://mon_hote/nouveau_depot +topic1:master

Cette technique permet de conserver l'historique de la branche existante.

Note: le nouveau dépôt est en réalité un nouveau dépôt remote. Si vous souhaitez travailler avec le nouveau dépôt, vous devez le cloner. Ce qui suit clonera le nouveau dépôt dans un répertoire de travail local appelé nouveau_depot:

$ git clone ssh://mon_hote/nouveau_depot

Dans cet exemple, lorsque vous clonerez le nouveau dépôt, vous verrez que la branche master est une copie de la branche topic1 du vieux dépôt.

27voto

JustinDoesWork Points 237

Tirez la branche comme d'habitude, puis poussez la branche vers un nouveau dépôt que vous avez créé en utilisant git init. Vous utiliseriez un code ressemblant à :

git push url:///new/repo.git TheBranchFolder

Cette méthode conserve également toutes vos modifications antérieures si cela est un avantage dans la situation.

26voto

Si vous ne vous souciez pas de perdre l'historique, faites un git checkout mybranch et copiez ensuite le contenu du répertoire dans un autre dossier. À l'intérieur de ce dossier, supprimez le dossier .git et ensuite :

git init; git commit -a -m "Importé depuis le projet Y"

8voto

chethan Points 85

Je ne sais pas si ma réponse aide toujours ou non, mais voici une autre façon de créer un nouveau dépôt en utilisant un existant.
étape 1: cloner le dépôt existant.
étape 2: supprimer le dossier .git dans le dossier du dépôt cloné
étape 3: créer un nouveau dépôt dans git.
étape 4: dans le dossier du dépôt cloné, exécuter git init
étape 5: git add .
étape 6: git remote add origin NOUVEAU_REPO/URL
étape 7: git branch -M "nom_branche"
étape 8: git push --set-upstream origin nom_branche

1voto

Notre environnement informatique exige que les dépôts git soient créés sur un serveur distant, donc git init n'est pas une bonne option. J'ai fait ceci à la place.

git clone  new
git clone  old
cd new
git remote add --no-tags -f old_repo ../old
git checkout -b main old_repo/main
git push origin main

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X