J'ai un dépôt sur github qui contient une application Web déployée sur deux domaines différents. L'application a de légères fourches logiques ici et là pour se comporter différemment selon le domaine vers lequel elle est déployée.
C'est arrivé au point où je veux le diviser en deux référentiels distincts, un pour chaque domaine.
Github ne me laissera pas le bifurquer dans la même organisation. La recherche de "git duplicate repo" suggère que je devrais mettre à nu le clone et le mettre en miroir Push, mais cela semble être pour garder les deux dépôts synchronisés, ce que je ne veux pas faire.
Quelle est la meilleure façon de procéder? J'aimerais conserver l'ancien historique de commit dans la nouvelle copie si possible.
Il vous suffit de créer un nouveau référentiel et de le pousser depuis votre copie de travail:
git clone [email protected]:me/myrepo-original
cd myrepo-original
git remote set-url Origin [email protected]:me/myrepo-new
git Push Origin master
Vous avez maintenant un nouveau référentiel, myrepo-new
, qui est identique à myrepo-original
.
Si vous n'avez pas besoin de la relation fork (par exemple, vous voulez une sorte de référentiel alternatif découplé pour une raison quelconque), la duplication du repo comme décrit par vos découvertes Google et la réponse de larsks est très bien.
Si vous faites voulez en faire un fork, contactez le support Github ([email protected] ou https://github.com/support ), et ils créer une fourchette dans la même organisation pour vous. (Ils ne sont pas pointilleux à ce sujet non plus, vous devrez simplement fournir un autre nom pour le dépôt, car les noms de dépôt dans un compte doivent être uniques.)
Mise à jour : L'utilisateur Steve Rice rapporte dans les commentaires ci-dessous que le support GitHub a déclaré que le support ne configurerait pas actuellement/plus de deuxième fork dans votre compte. Vous pouvez toujours essayer de leur demander, car les employés de support peuvent le faire - mais cela peut également être un changement de politique les empêchant de le faire.
Utilisez l'option Github Import Repository sur l'option + menu on haut de la page
Cela crée un nouveau référentiel avec le contenu exact du référentiel copié. L'inconvénient est qu'il ne compte pas comme un fork pour Github.
Une autre façon serait d'ajouter le dépôt d'origine, à copier, comme distant pour notre dépôt actuel.
#create a new repo in the org1 organization called myrepo-new
Dans votre terminal local, exécutez:
git clone [email protected]:org1/myrepo-new
cd myrepo-new
git remote -v #shows current repo link on github as Origin
git remote add name-for-remote https://github.com/org1/repo-old
git remote -v #shows repo-old as name-for-remote
git fetch name-for-remote
git merge name-for-remote/branch-to-get-from-remote
#Now fix any conflicts if present
#If number of files/commits is very high, the desktop client may hang when you try to commit your changes after merge. Try switching to Git Shell if this happens.
git status
git commit -m "commit message"
git Push Origin master
Solution alternative:
Créez une nouvelle organisation et créez-y une fourchette. Si le dépôt est privé, il le restera également dans la nouvelle organisation. Ensuite, vous pouvez donner accès aux développeurs externes ou à qui vous voulez au repo forké et ils peuvent ramener les RP au référentiel d'origine.