2013-03-06 18 views
27

stiamo usando git in Team Foundation Service e stiamo cercando di trovare un modo per eliminare un ramo remoto eseguendo il seguente comando.Git elimina il ramo remoto nel repository git TFS

git push origin --delete TheBranchName 

Il server remoto mantenere respingendo con seguente errore

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

alcuna idea di come impostare il permesso corretto per un utente in TFS?

+3

Sembra che non si disponga di diritti sufficienti per eseguire questa operazione. Il comando è corretto btw – iberbeu

risposta

2

Dal git push man-page:

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

Sembra che il ramo che si sta tentando di eliminare non è un antenato del ramo si è in - aggiungere questo argomento --force e vedere se aiuta.

+0

--force non funziona = ( –

5

Per eliminare un ramo remoto è possibile utilizzare:

git push origin :TheBranchName 
+0

Ho provato "git push origin --delete BranchName" e ho ricevuto un errore che non avevo i permessi richiesti - quindi ho seguito il tuo consiglio con "git" push origin: BranchName "e questo mi ha spinto per le mie credenziali e poi ha funzionato! Come/perché funziona? – Omaer

3

Nella prima risposta e il primo commento di questo link è risposto alla tua domanda:

"Qualcuno ha permesso un gancio nel telecomando repo che vieta l'eliminazione - questo di solito è fatto in modo che qualcuno non possa spingere un ramo ribaltabile nel repository (mantengo una collezione abbastanza ampia di repository git e sono tutti configurati in questo modo, sebbene non con un hook.)

Cerca nella directory hooks/nel repository remoto. Ci sarà uno script chiamato "aggiornamento"; questo è ciò che rifiuta di lasciare che si elimina il ramo."

+0

La domanda si riferisce a TFS, che non supporta i hook remoti. Beh, lo fa, ma non attraverso i ganci/directory - devi scrivere un gestore di eventi TFS ad es. http://almsports.net/tfs-server-side-check-in-policy-for-git-repositories/1025/ –

22

Le opzioni di sicurezza sono accessibili per i repository a
1. Code-> Explorer
2. Selezionare una forma di pronti contro termine l'Explorer
3. Al i dettagli del repository, si dovrebbe scegliere per il nome del repository accanto l'esploratore.
4. Selezionare la Gestione repository ... menù

Qui è possibile configurare i diritti di ogni gruppo del contribuente e singoli utenti dei repertori di dati e i loro rami. "Riscrivi e distruggi la storia (forza push)" opzione s cane essere permesso o ereditato consentire di essere in grado di forzare la spinta.

+1

Oh wow, che piccolo gioiello nascosto questo è –

+0

Ho dovuto aggiungermi esplicitamente e concedermi quell'autorizzazione, e ha funzionato – matthewpavkov

1

Sono atterrato su questa domanda alla ricerca di un modo per eliminare un ramo in VSO. Per chiunque altro sbarca qui, ho un processo un po 'macchinoso, ma funziona. Crea una richiesta di pull dal ramo. Una volta creata la richiesta di pull, abbandonarla. Una volta che hai abbandonato la richiesta, ti viene presentato un pulsante per il ramo di origine di eliminazione. Fare clic per eliminare il ramo.

+0

Sarebbe bello se funzionasse. Ho appena provato - dopo aver fatto clic su Abbandona, c'è solo Riattiva testa on e nessuna opzione "Cancella". – JustAMartin

1

Vorrei modificare Ursegor answer ma mi manca la reputazione di farlo.

Nella versione 14.102.25423.0 (Team Foundation Server 2015 Update 3) la sicurezza/permessi di opzioni possono essere accessibili per i repository a:

  1. Code/Explorer
  2. Selezionare un repository formare l'Explorer
  3. Fare clic sui tre puntini ... accanto al nome repositoy .
  4. Selezionare il Security
0

ho dovuto aprire lo strumento Git interfaccia utente, aprire il repo e cancellato il ramo da lì e ha funzionato bene. Non potevo farlo da TFS.

Problemi correlati