删除go-git中的本地分支:未找到分支

时间:2019-04-18 11:50:04

标签: go go-git

我正在尝试使用go-git删除本地分支,但是在运行时收到错误branch not found

branch := "refs/heads/template/test"
err = repo.DeleteBranch(branch)

err = repo.DeleteBranch(plumbing.ReferenceName(branch))

仅使用分支的名称(template/test)也不起作用。该分支包含在分支列表中。这个

refs, err := repo.Branches()
err = refs.ForEach(func(ref *plumbing.Reference) error {
    fmt.Println(ref)
    return nil
})

提供以下输出:

f2d93bb67ced13936dbbbbfb44502abd42e7df13 refs/heads/global
df46ab083f17051afd6ca20e3ea4bfe01aedbb37 refs/heads/template/test
141f45305380aa0dc9f6802512ea76c5d48a87a1 refs/heads/template/test2

如何删除它?

更新: 我检查了功能DeleteBranch,它看起来像这样:

// DeleteBranch delete a Branch from the repository and delete the config
func (r *Repository) DeleteBranch(name string) error {
    cfg, err := r.Storer.Config()
    if err != nil {
        return err
    }

    if _, ok := cfg.Branches[name]; !ok {
        return ErrBranchNotFound
    }

    delete(cfg.Branches, name)
    return r.Storer.SetConfig(cfg)

}

然后我创建了cfg := repo.Storer.Config()并检查了cfg.Branches包含的内容。令人惊讶的是,此地图仅包含以下元素:&{global origin refs/heads/global 0xc0007fbf80}。因此,无法删除其他分支,因为在此配置中找不到它们。

0 个答案:

没有答案