使用repo abandon和git branch -D命令删除分支

6

我正在使用git和git-repo来管理我的项目。当我试图使用git命令删除我当前所在的本地分支时,出现了以下情况:

git branch -D branch_name

当我尝试删除当前分支时,出现了预期的错误提示。

但是,如果我使用repo命令

repo abandon branch_name

我可以删除当前分支。所以我的问题是,仓库内部使用什么命令来删除分支?


2
如果有人对此感兴趣,可以在 https://gerrit.googlesource.com/git-repo/+/master/subcmds/abandon.py 找到“abandon”命令的源代码。 - user456814
1个回答

4

abandon.py 子命令调用了 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)

换句话说,它确保在你要删除的分支上,即使这意味着设置一个分离的HEAD(通过检出SHA1 'revid')。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接