2 votes

Comment supprimer une référence conflictuelle du dépôt Git ?

Actuellement, j'ai 2 références symboliques avec "master" dans le nom comme ci-dessous

git ls-remote git@github.com:company/project.git master
9547e4ba01d67e1ff3xxxxxd5110eaaf2f48    refs/for/master
06106b7f1005dbb9f1xxxxxxxx456d2be84346c refs/heads/master

Comment puis-je supprimer ou renommer la référence "refs/for/master" afin que la commande ls-remote ne renvoie qu'un seul résultat comme suit -

git ls-remote git@github.com:company/project.git master
06106b7f1005dbb9f1xxxxxxxx456d2be84346c refs/heads/master

3voto

Option 1: Supprimer la référence

Si vous souhaitez supprimer la référence refs/for/master, il vous suffit de la supprimer à distance (en utilisant l'une des méthodes suivantes) :

git push git@github.com:company/project.git :refs/for/master
git push git@github.com:company/project.git --delete for/master

Option 2: Renommer la référence

Voici une façon de la renommer, même si cela représente significativement plus de travail. Tout d'abord, vous devrez récupérer l'objet auquel la référence refs/for/master se rapporte. La seule manière que je connaisse est de modifier le fichier .git/config de votre dépôt pour le récupérer.

Pour plus de facilité, imaginons que vous ajoutiez git@github.com:company/project.git comme un dépôt distant appelé origin à votre dépôt local :

git remote add origin git@github.com:company/project.git

Ensuite, supposons que vous configurez votre configuration de fetch dans le fichier .git/config de votre clone local comme suit :

[remote "origin"]
    url = git@github.com:company/project.git
    fetch = refs/for/*:refs/remotes/origin/for/*

Ensuite, une fois que vous avez fait un git fetch origin, vous pouvez renommer la référence en quelque chose d'autre et la repousser (vous devrez néanmoins supprimer l'ancienne référence) :

git push origin :refs/for/master origin/for/master:for/master

:refs/for/master supprime l'ancienne référence, et origin/for/master:for/master pousse la copie ancienne de cette référence en tant que nouvelle référence distante for/master.

Vous pouvez en apprendre davantage sur la configuration du refspec de fetch pour les dépôts distants dans le chapitre 9.5 Git Internals - The Refspec du GRATUIT livre en ligne Pro Git.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X