我正在为我的项目使用 git 和git-repo。我看到当我尝试使用 git 命令删除我当前正在使用的本地分支时
git branch -D branch_name
它向我显示了我期望的错误,因为我们无法删除当前分支。
但是如果我使用 repo 命令
repo abandon branch_name
我可以删除当前分支。所以我的问题是 repo 在内部使用什么命令来删除分支?
subcmdabandon.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
')。