2013-03-06 11 views
27

Wir verwenden Git im Team Foundation Service, und wir versuchen, eine Möglichkeit zu finden, eine Remote-Zweigstelle zu löschen, indem Sie den folgenden Befehl ausführen.Git löschen Remote-Zweig in TFS-Git-Repository

git push origin --delete TheBranchName 

Der Remote-Server halten mit folgendem Fehler zurückgewiesen

! [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' 

eine Idee, wie in TFS richtige Berechtigung für einen Benutzer setzen?

+3

Es scheint, dass Sie nicht genügend Rechte haben, um diese Operation auszuführen. Der Befehl ist richtig btw – iberbeu

Antwort

2

Vom git push Mann-Seite:

-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. 

Sieht aus wie der Zweig Sie versuchen, zu löschen ist nicht ein Vorfahre der Branche Sie sind - hinzufügen, um dieses --force Argument und sehen, ob es hilft.

+0

--force funktioniert nicht = ( –

5

eine Remote-Zweig löschen Sie verwenden können:

git push origin :TheBranchName 
+0

Ich habe versucht "git push Herkunft --delete BranchName" und bekam einen Fehler, dass ich nicht die erforderlichen Berechtigungen hatte - dann folgte ich Ihrem Rat mit der "git push Herkunft: BranchName "und das forderte mich für meine Anmeldeinformationen, und dann funktioniert! Wie/warum funktioniert das? – Omaer

3

In der ersten Antwort und der erste Kommentar des link ist Ihre Frage beantwortet:

„Jemand einen Haken in der Fernbedienung aktiviert hat Repo, das das Löschen verbietet - das wird normalerweise so gemacht, dass jemand einen rebased Zweig nicht in den Repo schieben kann (ich behalte eine ziemlich große Sammlung von Git Repositories und sie sind alle auf diese Weise konfiguriert, allerdings nicht mit einem Haken.)

Suchen Sie im Verzeichnis hooks/im Remote-Repository. Es wird ein Skript namens "update" geben; das ist, was Sie den Zweig löschen zu lassen, weigert sich.“

+0

Die Frage bezieht sich auf TFS, die Remote-Hooks nicht unterstützt. Nun, tut es, aber nicht durch die Haken/Verzeichnis - Sie müssen einen TFS Event-Handler schreiben zB http://almsports.net/tfs-server-side-check-in-policy-for-git-repositories/1025/ –

22

Die Sicherheitsoptionen können für den Repositories bei
1. Code-> Explorer
2. Wählen Sie ein Repo-Formular Explorer
3. Auf zugegriffen werden die Einzelheiten des Repository, sollten Sie neben dem Explorer auf den Namen des Repository klicken.
4. die Repositorys verwalten Wählen Sie ... Menü

Hier können Sie die Rechte jeder Mitwirkende Gruppen und einzelne Benutzer für Repositorys konfigurieren und ihre Äste. "Schreibe und zerstöre die Geschichte (force push)" Option s Hound be Erlauben oder vererbt Erlaube es, Push zu erzwingen.

+1

Oh wow, was für ein verstecktes kleines Juwel das ist –

+0

Dies sollte die akzeptierte Antwort sein –

+0

Ich musste mich explizit hinzufügen und mir diese Erlaubnis geben, und es hat funktioniert – matthewpavkov

1

Ich landete auf dieser Frage auf der Suche nach einer Möglichkeit, einen Zweig in VSO zu löschen. Für jeden, der hier landet, habe ich einen Prozess, der ein wenig mühsam ist, aber funktioniert. Erstellen Sie eine Pull-Anforderung von der Verzweigung. Sobald die Pull-Anforderung erstellt wurde, geben Sie sie auf. Nachdem Sie die Anfrage abgebrochen haben, wird eine Schaltfläche zum Löschen der Quelle angezeigt. Klicken Sie darauf, um den Zweig zu löschen.

+0

Es wäre gut, wenn es funktioniert.Ich habe gerade versucht - nach Klick auf Abandon, gibt es nur reaktivieren Hintern an und keine "Löschen" Optionen. – JustAMartin

1

Ich möchte Ursegor answer bearbeiten, aber mir fehlt der Ruf, dies zu tun.

In Version 14.102.25423.0 (Team Foundation Server 2015 Update 3) die Sicherheit/Berechtigungen Optionen können für den Repositories abgerufen werden unter:

  1. Code/Explorer
  2. Wählen Sie ein Repository bilden den Explorer
  3. klicken, um die drei Punkte ... neben dem repositoy Namen .
  4. das Wählen Security
0

Ich öffne nur musste das Git UI-Tool öffnen, den Repo und den Zweig von dort gelöscht und es funktionierte gut. Ich konnte es nicht von TFS machen.