Я пытаюсь удалить локальную ветку, используя 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}
. Таким образом, другие ветви не могут быть удалены, потому что они не найдены в этой конфигурации.