将当前分支与 git2go 中的上游(或任何其他参考)合并

我正在尝试在 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

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


慕森卡
浏览 187回答 1
1回答

尚方宝剑之说

默认情况下,Checkout 正在执行试运行,因此为了能够成功合并,我必须使用以下内容:checkoutOpts := git.CheckoutOpts{&nbsp; &nbsp; Strategy: git.CheckoutSafe | git.CheckoutRecreateMissing | git.CheckoutAllowConflicts | git.CheckoutUseTheirs,}唯一可用的文档在checkout.go 源中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go