首页 > 解决方案 > 如何使用 go-git 签出新的本地分支?

问题描述

当我尝试使用工作树结帐时;它不起作用并且代码返回错误

err = worktree.Checkout(&git.CheckoutOptions{
    Create: true,
    Branch: "main",
})
if err != nil {
    log.Fatal("Cannot create 'main' branch\n" + err.Error())
}

输出:

[FATA] Cannot create 'main' branch
reference not found

我使用时遇到同样的错误

repository.CreateBranch(&config.Branch{
    Name: "main",
})

标签: gogo-git

解决方案


虽然GitHub 确实很快会重命名mastermain,但 Git 存储库(在 GitHub 上或不在 GitHub 上)的默认分支现在仍然master是。

所以先试试:

err = worktree.Checkout(&git.CheckoutOptions{
    Create: true,
    Branch: "master",
})

但如果目标是创建一个新分支,请确保 repo 已初始化或已签出到有效分支。
例如,参见repository_test.go

    r, _ := Init(memory.NewStorage(), nil)
    testBranch := &config.Branch{
        Name:   "foo",
        Remote: "origin",
        Merge:  "refs/heads/foo",
    }
    err := r.CreateBranch(testBranch)

推荐阅读