web-dev-qa-db-fra.com

Supprimer la dépendance de fork d'un référentiel GitHub

Comment puis-je faire oublier ou dissocier GitHub que mon repo était à l'origine un fork d'un autre projet?

J'ai lancé un projet dans GitHub. Je peux maintenant voir "fourchu à partir de tout/n'importe quoi". Le référentiel parent "quel que soit/quel que soit" n'est plus maintenu. On m'a 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?

179
Mick

Vous pouvez contacter le support github et leur demander de basculer votre référentiel en "mode normal".

Sur cette page , au paragraphe "L'engagement a été effectué dans une fourchette", il est expliqué qu'il faut passer par le support pour basculer. Par conséquent, il est probable qu’il n’existe aucun moyen de le faire par vous-même (à moins de détruire et de recréer votre référentiel, comme expliqué précédemment ... si vous le faites, faites attention si vous avez des tickets ou un wiki attaché à votre projet sera sera supprimé!).

154
Thomas Moulard

Assurez-vous que vous avez toutes les branches et les balises importantes sur votre référentiel local, supprimez le référentiel github, recréez le référentiel par des moyens usuels (sans forking) et repoussez le référentiel local avec git Push --all. Notez que si vous ne souhaitez pas publier de branches locales, il peut être intéressant de créer un clone local propre et temporaire pour l'opération.

Cependant, cela éliminera également le wiki et les problèmes. Comme le wiki est en fait son propre référentiel, il peut être géré de la même manière en le clonant puis en le recréant et en le poussant. L’adresse de dépôt se trouve sur la page Git Access du wiki ([email protected]:user/repo.wiki.git).

Cela laisse des problèmes. Ils peuvent être exportés via API , mais, 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 préserver les problèmes, vous devriez consulter github, comme le suggère Thomas Moulard.

41
Tapio

Vous pouvez dupliquer le référentiel forké dans un nouveau référentiel (sans la dépendance de fork) à partir de l'interface utilisateur de github, puis supprimer le référentiel forké d'origine:

  • Connectez-vous à github
  • Sélectionnez le signe + dans le coin supérieur droit et Importez le référentiel .
  • Importez votre référentiel forké. Le nouveau référentiel n'aura pas la dépendance fork.
  • Supprimez le référentiel forké d'origine dans les paramètres du référentiel.
28
Juuso Ohtonen

J'ai eu le même problème et j'ai fini par utiliser ceci page d'aide de github pour le résoudre. Le wiki et le suivi des problèmes ne me dérangeaient pas, comme c'était le cas pour mon blog, utilisant un thème développé avec gentillesse par un autre utilisateur.

Pour détacher un repo forké et l'utiliser comme votre propre après plusieurs commits sans perdre l'historique complet:

git clone --bare [email protected]:user/forked_repo.git

Créer un nouveau dépôt vide new-repository sur le site Web de github. Et pousser une version en miroir:

cd user.github.com.git/

git Push --mirror [email protected]:user/new-repository.git

On peut renommer sur github, le forked_repository avec un autre nom pour le conserver en tant que sauvegarde et vérifier les mises à jour si nécessaire. Ou simplement le supprimer.

Renommer le new-repository au nom d'origine fait le travail. En tant qu'effet secondaire, vos commits apparaissent maintenant dans votre historique.

19
aurelien

Ceci s'applique uniquement à GitHub Enterprise, pas sur github.com

Connecté à un compte disposant des privilèges d'administrateur:

  1. Accédez au référentiel que vous devez détacher: https://<ghe url>/<org>/<repo>
  2. Cliquez sur la fusée "Site Admin" dans le coin supérieur droit
  3. Cliquez sur "Collaboration" dans la barre de menu supérieure.
  4. Cliquez sur "Réseau" dans le volet de gauche.
  5. Cliquez sur "Créer une racine" dans le volet Structure du réseau.
  6. Acceptez

Ceci a été testé sur GitHub Enterprise 2.9

9
Antonio O.

En utilisant les informations de aurelien et Clayton , j'ai pu le faire avec les éléments suivants:

$ 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 la documentation pour git clone --bare :

Créez un référentiel Git nu. Autrement dit, au lieu de créer <directory> et placer les fichiers administratifs dans <directory>/.git, faire le <directory> lui-même le $GIT_DIR. Cela implique évidemment le -n car il n’existe nulle part où extraire l’arbre de travail. De plus, les têtes de branches distantes sont copiées directement dans les têtes de branches locales correspondantes, sans les mapper sur 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 la documentation pour git Push --mirror :

Au lieu de nommer chaque référence en Push, spécifie que toutes les références sous refs/ _ (qui inclut, sans toutefois s'y limiter, refs/heads/, refs/remotes/, et refs/tags/) être mis en miroir sur le référentiel distant. Les références locales nouvellement créées seront poussées vers l'extrémité distante, les références actualisées localement seront mises à jour de force sur l'extrémité distante et les références supprimées seront supprimées de l'extrémité distante. C'est la valeur par défaut si l'option de configuration remote.<remote>.mirror est réglé.

Remarque: comme pour les autres réponses basées sur git, cela ne copiera pas les problèmes ne faisant pas partie du référentiel git tels que le wiki et les problèmes. Par Tapio:

  • Le wiki est un repo git distinct et peut être géré de la même manière par Tapio. L'adresse est: [email protected]:user/repo.wiki.git.
  • Les problèmes peuvent être exportés via l'API GitHub, mais ils sont recréés car ils ne peuvent être créés que par votre utilisateur. Par conséquent, les importations perdront des informations.
7
Grokify