2010-02-09 4 views
128

J'ai une branche que j'aimerais déplacer dans un dépôt Git séparé, et idéalement garder l'historique de cette branche dans le processus. Jusqu'à présent, j'ai regardé git filter-branch, mais je ne peux pas savoir si elle peut faire ce que je veux faire.Comment déplacer une branche Git dans son propre référentiel?

Comment extraire une branche Git dans son propre référentiel?

Répondre

207

Vous pouvez simplement pousser une branche vers un nouveau référentiel. Tout son histoire ira avec. Vous pouvez ensuite choisir de supprimer la branche du référentiel d'origine.

par exemple.

git push url://to/new/repository.git branch-to-move:new-branch-name 

Pour un nouveau référentiel, le nom de nouvelle branche est généralement maître.

La création d'un nouveau référentiel vide peut être effectuée avec git init.

+12

Juste au cas où quelqu'un se demande, j'ai substitué l'URL avec le chemin vers un répertoire de dépôt Git, et cela a fonctionné parfaitement. – Aupajo

+41

Vous pouvez également nommer le nom de la branche dans le nouveau référentiel: 'git push url: //to/new/repository.git branch-to-move: nouveau-branche-name' –

+4

Yves 'commentaire ci-dessus est correct, sinon vous n'aurez pas de master là-bas et le processus de clonage se terminera 'warning: remote HEAD fait référence à un ref inexistant, incapable de checkout.'. Si déjà à ce stade, allez avec git checkout -b branch-to-move' et vous êtes sûr ou vous allez simplement avec 'git checkout -b master' pour avoir votre branche principale :) –

12

Cela permet de garder l'histoire de toutes les branches, mais faites votre point de copie à une branche en particulier:

git clone -b newbranch CurrentRepo NewRepo 

Cela ne rien « move », juste fait une copie.

+2

À noter que 'clone -b' est nouveau. Il nécessite git> = 1.6.5 (publié en octobre 2009). –

+0

J'ai eu du mal à faire fonctionner ça, mais c'était avant de voir le message de Charles Bailey. – Aupajo

Questions connexes