Pourquoi ne git pas permettez-moi de supprimer une branche distante
J'ai un dépôt local que je veux mettre en miroir à distance 'websrv'. Cette habitude de travailler bien jusqu'à ce que j'ai supprimé une succursale locale. Maintenant, quand je ne
git push --mirror websrv
- Je obtenir
remote: error: By default, deleting the current branch is denied, because the next
remote: error: 'git clone' won't result in any file checked out, causing confusion.
remote: error:
remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: error: current branch, with or without a warning message.
remote: error:
remote: error: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/ecoli-moments
To [email protected]:~/baki_tracking.git
! [remote rejected] ecoli-moments (deletion of the current branch prohibited)
La branche "ecoli-moments" points à la même commettre en tant que maître, locaux et distants.
Ce que je peux faire à ce sujet afin que la branche distante sera correctement supprimés?
Mise à jour:
Le dépôt distant est nu, j'ai vérifié le répertoire sur le serveur (le fichier de config a nu=true).
- Oui, mais autant que je peux voir, il me dit comment traiter avec le message d'erreur et non la cause.
- Ma conjecture est que vous n'êtes pas le poussant à un
bare
dépôt et que vous n'êtes pas autorisé à supprimer la branche est actuellement sorti surwebserv
. - L'erreur parle de clone, pas de répertoire de travail. Ce n'est pas le non-nue dépôts donner lorsque l'on pousse dans l'extrait de la branche. Mais quand j'ai regardé la documentation pour l'option, elle ne parle de non-nue dépôts. J'avais encore confiance le message d'erreur de plus que le doc et pense que l'opération peut être correctement nue si.
- Marius, voulez-vous avoir la gentillesse et la mise à jour de la question de savoir si le référentiel (sur webserv) est nu ou pas?
Vous devez vous connecter pour publier un commentaire.
Même un dépôt nu a une branche courante. C'est à celui qui sera vérifié par défaut lorsque vous clonez le dépôt. Git ne souhaitez pas supprimer et de vous dire pourquoi.
La branche par défaut est le spécial
HEAD
de référence. Modifier le point de quelque chose qui devrait toujours exister, ou d'une révision. Voir aussi Comment fonctionne l'origine/la TÊTE, se mettre?.Vous aurez à changer que la TÊTE des points manuellement à l'aide de
git symbolique-ref
(1) sur le serveur.Ou vous pouvez définir l'option mentionné dans le message d'erreur de faux (
git config receive.denyDeleteCurrent false
sur le serveur); si c'est juste une sauvegarde (--mirror
est principalement approprié uniquement pour la sauvegarde), la branche par défaut n'a pas vraiment d'importance.Ce qui semble être un non dépôt nu. Si c'est le cas, toute opération push à l'extrait de branche sur la non nue pensions ne fonctionnera pas, git ne permet pas que.
Alors vous avez essentiellement besoin de vérifier d'une autre branche, et puis le pousser vers le repo.
De Jan commentaire, Une méthode utile est de vérifier aucune branche, c'est aller à l'état connu comme
detached HEAD
où laHEAD
ref
points de révision spécifique plutôt qu'à une branche.L'avantage de cela est que si vous faites plus s'engage à différentes branches à l'avenir, vous n'avez pas à vérifier branche différente à chaque fois cette erreur est levée.
Une meilleure façon d'éviter cela, si vous faites cela pour les sauvegardes seulement, est d'utiliser un nu repo la prochaine fois à partir.
HEAD
ref points de révision spécifique plutôt qu'à une branche. Git pourrait probablement passer pour que l'état lui-même sur une telle poussée, mais personne ne se souciait de ce cas d'utilisation assez pour la mettre en œuvre, autant que je sache.clone
ne sais pas ce que pour vérifier. Donc il n'a pas à être vérifié.