2013-03-06 5 views
27

Nous utilisons git dans Team Foundation Service, et nous essayons de trouver un moyen de supprimer une branche distante en exécutant la commande suivante.Git supprime la branche distante dans le dépôt git TFS

git push origin --delete TheBranchName 

Le serveur distant garder rejeté avec l'erreur suivante

! [remote rejected] TheBranchName (TF401026: The ForcePush permission is required to perform this action.) error: failed to push some refs to 'https://xxx.visualstudio.com/DefaultCollection/_git/Xxxxxx' 

toute idée comment définir l'autorisation correcte à un utilisateur dans TFS?

+3

Il semble que vous n'ayez pas les droits suffisants pour effectuer cette opération. La commande est correcte btw – iberbeu

Répondre

2

de l'homme page git push:

-f 
--force 
    Usually, the command refuses to update a remote ref that is not an ancestor of the 
    local ref used to overwrite it. This flag disables the check. This can cause the 
    remote repository to lose commits; use it with care. 

On dirait que la branche que vous essayez de supprimer n'est pas un ancêtre de la branche que vous êtes sur - ajoutez cet argument --force et voir si ça aide.

+0

--force ne fonctionne pas = ( –

5

Pour supprimer une branche à distance, vous pouvez utiliser:

git push origin :TheBranchName 
+0

J'ai essayé "git push origine --delete BranchName" et j'ai reçu une erreur que je n'avais pas les permissions requises - alors j'ai suivi votre conseil avec le "git pousser l'origine: BranchName "et qui m'a incité à mes informations d'identification, et puis travaillé! Comment/pourquoi cela fonctionne? – Omaer

3

Dans la première réponse et le premier commentaire de ce link est répondu à votre question:

« Quelqu'un a permis un crochet dans la télécommande repo qui interdit la suppression - ceci est généralement fait de sorte que quelqu'un ne peut pas pousser une branche rebasée dans le repo. (Je maintiens une assez grande collection de dépôts git et ils sont tous configurés de cette façon, mais pas avec un crochet.

Regardez dans le répertoire hooks/du référentiel distant. Il y aura un script nommé "update"; c'est ce refus vous permet de supprimer la branche. »

+0

La question se réfère à TFS, qui ne prend pas en charge les crochets à distance.Eh bien, mais pas à travers les crochets/répertoire - vous devez écrire un gestionnaire d'événement TFS par exemple http://almsports.net/tfs-server-side-check-in-policy-for-git-repositories/1025/ –

22

Les options de sécurité sont accessibles pour les dépôts à
1. Code-> Explorateur
2. Sélectionnez une forme de prise en pension Explorer
3. A les détails du référentiel, vous devez cliquer sur le nom du référentiel à côté de l'explorateur.
4. Sélectionnez le Manage dépôts ... Menu

ici vous pouvez configurer les droits de chaque groupe de contributeurs et les utilisateurs individuels pour les dépôts et leurs branches. "Réécrire et détruire l'histoire (pousser la force)" option s Chien soit Autorisé ou Hérité Permet de pouvoir pousser.

+1

Oh wow, quel petit bijou caché c'est –

+0

Ceci devrait être la réponse acceptée –

+0

Je devais explicitement m'ajouter et me donner cette permission, et cela a fonctionné – matthewpavkov

1

J'ai posé cette question en cherchant un moyen de supprimer une branche dans VSO. Pour quelqu'un d'autre qui débarque ici, j'ai un processus qui est un peu lourd, mais qui fonctionne. Créez une requête de traction à partir de la branche. Une fois la demande de tirage créée, abandonnez-la. Une fois que vous avez abandonné la demande, un bouton de branche de suppression de source s'affiche. Cliquez sur pour supprimer la branche.

+0

Ce serait bien si ça fonctionnait .J'ai juste essayé - après avoir cliqué sur Abandonner, il n'y a que Réactiver la crosse sur et aucune des options "Supprimer". – JustAMartin

1

Je voudrais éditer Ursegor answer mais je n'ai pas la réputation de le faire.

Dans la version 14.102.25423.0 (Team Foundation Server 2015 Mise à jour 3) la sécurité/autorisations options peuvent être accessibles pour les dépôts à:

  1. Code/Explorer
  2. Sélectionnez un référentiel forme l'explorateur
  3. Cliquez sur les trois points ... à côté du nom de repositoy .
  4. Sélectionnez le Security
0

Je viens d'ouvrir l'outil interface utilisateur Git, ouvrez le repo et supprimé la branche à partir de là et il a bien fonctionné. Je ne pouvais pas le faire à partir de TFS.

Questions connexes