Удаление ветки с помощью репо и git branch -D

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

git branch -D branch_name

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

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

repo abandon branch_name

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

1 ответ

abandon.py Subcmd вызывает проект. 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)

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

Другие вопросы по тегам