2013-05-23 3 views
4

Я использую git и git-repo для моего проекта. Я вижу, когда я пытаюсь удалить свой местный филиал, который я в данный момент с помощью команды GITУдаление ветки с репо-отказом и git branch -D

git branch -D branch_name 

Он показывает мне ошибку, которую я ожидал, так как мы не можем удалить текущую ветвь.

Но если я использую команду репо

repo abandon branch_name 

Я могу удалить текущую ветвь. Итак, мой вопрос в том, какая команда репо использует внутренне для удаления ветки?

+1

Если кто-либо заинтересован в проведении исследований по этому вопросу, вы можете найти исходный код команды 'abandon' на странице https://gerrit.googlesource.com/git-repo/+/master/subcmds/abandon.py –

ответ

3

В abandon.py subcmd звонки project.AbandonBranch, которая включает в себя:

head = self.work_git.GetHead() 
if head == rev: 
    # We can't destroy the branch while we are sitting 
    # on it. Switch to a detached HEAD. 
    # 
    head = all_refs[head] 

    revid = self.GetRevisionId(all_refs) 
    if head == revid: 
    _lwrite(os.path.join(self.worktree, '.git', HEAD), 
      '%s\n' % revid) 
    else: 
    self._Checkout(revid, quiet=True) 

Другими словами, он убеждается в не быть на ветке удаляемого, даже если это означает создание detached HEAD (по кассе от SHA1 'revid').

Смежные вопросы