gpt4 book ai didi

go - 在 git2go 中将当前分支与上游(或任何其他引用)合并

转载 作者:IT王子 更新时间:2023-10-29 02:15:51 24 4
gpt4 key购买 nike

我正在尝试在 git2go 中复制以下命令的结果:

git merge -X theirs --no-ff -m "Commit msg" <commit>

我能够使用 remote.Fetch(nil, nil, "") 成功获取上游远程,但我无法进行实际的合并。这是我用于合并的代码:

// get the upstream ref's annotated commit to merge in
head, _ := repo.Head()
upstream, _ := head.Branch().Upstream()
annotatedCommit, _ := repo.AnnotatedCommitFromRef(upstream)

// prepare merge and checkout options
mergeOpts, _ := git.DefaultMergeOptions()
mergeOpts.FileFavor = git.MergeFileFavorTheirs
checkoutOpts := git.CheckoutOpts{
Strategy: git.CheckoutUseTheirs,
}

// do the merge
err := repo.Merge([]*git.AnnotatedCommit{annotatedCommit}, &mergeOpts, &checkoutOpts)
// no error here

我知道在这之后我需要检查索引是否有任何冲突,并且实际上与两个 parent 一起提交,但是我现在被困在这里因为 Merge() 没有' 似乎正在做任何事情(没有合并,没有结帐)。

最佳答案

Checkout 默认执行空运行,因此为了能够成功合并,我必须使用如下内容:

checkoutOpts := git.CheckoutOpts{
Strategy: git.CheckoutSafe | git.CheckoutRecreateMissing | git.CheckoutAllowConflicts | git.CheckoutUseTheirs,
}

唯一可用的文档在 checkout.go source 中.

关于go - 在 git2go 中将当前分支与上游(或任何其他引用)合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31276740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com