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?
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é!).
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.
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:
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.
Ceci s'applique uniquement à GitHub Enterprise, pas sur github.com
Connecté à un compte disposant des privilèges d'administrateur:
https://<ghe url>/<org>/<repo>
Ceci a été testé sur GitHub Enterprise 2.9
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 surrefs/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/
, etrefs/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 configurationremote.<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:
[email protected]:user/repo.wiki.git
.