Supprimer la dépendance fork d'un dépôt GitHub
Comment puis-je faire oublier ou dissocier GitHub que mon repo était à l'origine une fourchette d'un autre projet?
J'ai bifurqué un projet dans GitHub. Je peux maintenant Voir "fourchu de n'importe quoi/n'importe quoi". Le référentiel parent "whatever / whatever"n'est plus maintenu. J'ai été autorisé à continuer à utiliser la base de code du référentiel d'origine pour créer un référentiel indépendant.
Existe-t-il un moyen de détacher mon projet du référentiel d'origine?
6 réponses
Vous pouvez contacter le support github et leur demander de basculer votre référentiel en "mode normal".
Sur cette page , le paragraphe "Commit a été fait dans un fork", il est expliqué qu'il faut passer par le support pour basculer. Par conséquent, il est probable qu'il n'y ait aucun moyen de le faire par vous-même (sauf si vous détruisez et recréez votre repo qui est expliqué précédemment... si vous le faites soyez prudent si vous avez des billets ou un wiki attaché à votre projet car ils will be supprimé!).
Assurez-vous d'avoir toutes les branches et balises importantes sur votre dépôt local, supprimez le dépôt github, recréez le dépôt par les moyens habituels (pas de bifurcation) et repoussez le dépôt local avec git push --all
. Notez que si vous avez des branches locales que vous ne souhaitez pas publier, il peut être utile de créer un clone Local propre temporaire pour l'opération.
Cependant, cela permettra également de se débarrasser du wiki et des problèmes. Comme le wiki est en fait son propre référentiel, il peut être géré de la même manière par clonage et puis de la recréer et de pousser. L'adresse de dépôt se trouve sur la page d'accès Git du wiki (git@github.com:user/repo.wiki.git
).
Cela laisse des problèmes. Ils peuvent être exportés via l'API , mais pour autant que je sache, vous ne pouvez créer que des problèmes et des commentaires avec votre personne, il est donc impossible de les importer parfaitement.
Donc, si vous avez besoin de problèmes à préserver, vous devriez passer par le support github comme le suggère Thomas Moulard.
J'ai eu le problème similaire, et j'ai fini par utiliser cette page d'aide github pour le résoudre. Je ne me souciais pas du wiki et des problèmes de suivi comme c'était pour mon blog en utilisant un thème aimablement développé par un autre utilisateur.
Pour détacher un repo fourchu et l'utiliser comme le vôtre après plusieurs commits sans perdre tout l'historique:
git clone --bare git@github.com:user/forked_repo.git
Créez un nouveau reposity vide new-repository
sur le site github.
Et poussez une version en miroir:
cd user.github.com.git/
git push --mirror git@github.com:user/new-repository.git
On peut renommez sur github, le forked_repository
avec un autre nom pour le garder comme sauvegarde et vérifier les mises à jour si nécessaire. Ou tout simplement le supprimer.
Renommer le new-repository
au nom d'origine fait le travail. Comme effet secondaire, vos commits apparaissent maintenant dans votre historique.
Vous pouvez dupliquer le référentiel forked vers un nouveau référentiel (sans la dépendance de fork) à partir de l'interface utilisateur github, puis supprimer le référentiel forked original:
- connectez-vous à github
- Sélectionnez le + connectez - vous dans le coin supérieur droit et Import repository.
- Importez votre référentiel forked. Le nouveau référentiel n'aura pas la dépendance fork.
- supprimez le référentiel bifurqué d'origine dans les paramètres du référentiel.
Cela s'applique uniquement aux GitHub Enterprise, pas sur github.com
Connecté à un compte doté de privilèges d'administrateur:
- allez dans le référentiel que vous devez détacher:
https://<ghe url>/<org>/<repo>
- Cliquez sur la fusée "Site Admin" dans le coin supérieur droit
- Cliquez sur "Collaboration" dans la barre de menu supérieure
- Cliquez sur "Réseau" dans le volet de gauche
- Cliquez sur "Make Root" dans le volet Structure du réseau
- Accepter
Cela a été testé sur GitHub Entreprise 2.9
En utilisant les informations de aurelien et Clayton , j'ai pu le faire avec ce qui suit:
$ git clone --bare https://github.com/my/forked_repo.git
<delete forked_repo on GitHub>
<recreate repo on GitHub using same name>
$ cd forked_repo.git
$ git push --mirror
Voici le documentation pour git clone --bare
:
Créez un dépôt git nu. C'est, au lieu de créer
<directory>
et de placer les fichiers administratifs dans<directory>/.git
, faire de la<directory>
lui-même le$GIT_DIR
. Cela implique évidemment le-N car il n'y a nulle part où vérifier l'arbre de travail. De plus les têtes de branche de la télécommande sont copiées directement dans têtes de branche locales correspondantes, sans les mapper àrefs/remotes/origin/
. Lorsque cette option est utilisée, ni les branches de suivi à distance ni les variables de configuration associées ne sont créées.
Voici le documentation pour git push --mirror
:
Au lieu de nommer chaque ref à push, spécifie que toutes les refs sous
refs/
(qui inclut mais n'est pas limité àrefs/heads/
,refs/remotes/
, etrefs/tags/
) être mis en miroir dans le référentiel distant. Les refs locaux nouvellement créés seront poussés vers la télécommande fin, les refs mis à jour localement seront mis à jour sur l'extrémité distante, et les refs supprimés seront supprimés de l'extrémité distante. C'est la valeur par défaut si l'option de configurationremote.<remote>.mirror
est définie.
Note: Comme les autres réponses basées sur git
, cela ne copiera pas les problèmes qui ne font pas partie du repo git
tels que le wiki et les problèmes. Par Tapio:
- le wiki est un repo git séparé et peut être géré de la même manière par Tapio. L'adresse est:
git@github.com:user/repo.wiki.git
. - Les problèmes peuvent être exportés via L'API GitHub, mais il y a des problèmes qui les recréent car ils ne peuvent être créés que par votre utilisateur, de sorte que les importations perdront des informations.