2013-03-06 7 views
27

Мы используем git в Team Foundation Service, и мы пытаемся найти способ удалить удаленную ветвь, выполнив следующую команду.Git удалять удаленную ветку в репозитории TFS git

git push origin --delete TheBranchName 

Удаленный сервер держать отвергая с следующим сообщением об ошибке

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

любой идее, как установить правильное разрешение пользователя в TFS?

+3

Кажется, что у вас недостаточно прав для выполнения этой операции. Команда права btw – iberbeu

ответ

2

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

Похоже, ветвь, которую вы пытаетесь удалить, не является предок ветви вы находитесь - добавить этот аргумент --force и посмотреть, если это помогает.

+0

--force не работает = ( –

5

Для удаления удаленного филиала вы можете использовать:

git push origin :TheBranchName 
+0

Я пробовал «git push origin --delete BranchName» и получил сообщение об ошибке, что у меня не было необходимых разрешений, - тогда я последовал вашему совету с помощью git push origin: BranchName ", и это вызвало мои учетные данные, а затем сработало! Как/почему это работает? – Omaer

3

В первом ответе и первый комментарий этого link ответа на ваш вопрос:

«Кто-то включил крюк в пульте дистанционного управления репо, запрещающее удаление - обычно это делается так, что кто-то не может перетащить ветвь с переустановкой в ​​репо. (Я поддерживаю довольно большую коллекцию репозиториев git, и все они настроены таким образом, хотя и не с крючком.)

Просмотрите каталог hooks/в удаленном репозитории. Будет сценарий с именем «update»; это то, что отказ позволить вам удалить ветку.»

+0

Вопрос относится к TFS, который не поддерживает удаленные перехватчики. Ну, это так, но не с помощью перехватчиков/каталог - вам нужно написать обработчик событий TFS, например http://almsports.net/tfs-server-side-check-in-policy-for-git-repositories/1025/ –

22

возможные параметры безопасности могут быть доступны для хранилищ в
1. код-> Проводник
2. Выберите образуют РЕПО- Проводник
3. В подробности в хранилище, вы должны нажать на имя хранилища рядом с исследователем.
4. Выберите Управление хранилищами ... меню

Здесь вы можете настроить права каждого вкладчика групп и отдельных пользователей для хранилищ и их ветви ". Переписать и уничтожить историю (принудительный толчок)" вариант s hound be Allow or Inherited Позволить иметь возможность принудительного нажатия.

+1

О, ничего себе, какой скрытый маленький камень это –

+0

Это должен быть принятый ответ –

+0

Мне пришлось явно добавить себя и дать себе это разрешение, и это сработало. – matthewpavkov

1

Я приземлился на этот вопрос, ища способ удалить ветку в VSO. Для всех, кто приземляется здесь, у меня есть процесс, который немного громоздкий, но работает. Создайте запрос на растяжение из ветки. Как только запрос на растяжение будет создан, закройте его. Как только вы откажетесь от запроса, вам будет предложена кнопка отделения источника удаления. Нажмите, чтобы удалить ветку.

+0

Было бы хорошо, если бы это сработало. Я просто попробовал - после нажатия Abandon есть только Reactivate butt и никаких параметров «Удалить». – JustAMartin

1

Я хотел бы отредактировать Ursegor answer, но мне не хватает репутации, чтобы сделать это.

В версии 14.102.25423.0 (Team Foundation Server 2015 Update 3) безопасность/разрешение опция может быть доступна для репозиториев по адресу:

  1. Code/Explorer
  2. Выберите хранилище образуют Проводник
  3. Нажмите на три точки ... рядом с именем repositoy ,
  4. Выберите Security
0

Я просто должен был открыть инструмент Git UI откройте репозиторий и удаленный филиал оттуда, и она работала отлично. Я не мог сделать это из TFS.