2 回答

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
首先,我沒(méi)有足夠的聲譽(yù)來(lái)評(píng)論P(yáng)edro的答案,但他的方法在階段失敗了,因?yàn)閷?shí)際上沒(méi)有在存儲(chǔ)上創(chuàng)建分支(從未調(diào)用存儲(chǔ)庫(kù))。CheckoutStorer
其次,這是我第一次聽(tīng)說(shuō)dir,所以不,不會(huì)為該dir中的分支創(chuàng)建記錄。.git/loggit branch
這就引出了實(shí)際的解決方案,即作為 go-git 存儲(chǔ)庫(kù)分支的示例提供的解決方案。
要?jiǎng)?chuàng)建分支(脫離 HEAD):
Info("git branch test")
branchName := plumbing.NewBranchReferenceName("test")
headRef, err := r.Head()
CheckIfError(err)
ref := plumbing.NewHashReference(branchName, headRef.Hash())
err = r.Storer.SetReference(ref)
CheckIfError(err)
簽出分支
Info("git checkout test")
w, err := r.Worktree()
CheckIfError(err)
err = w.Checkout(&git.CheckoutOptions{Branch: ref.Name()})
CheckIfError(err)
但是,這樣,在 中沒(méi)有此分支的配置,因此應(yīng)該有對(duì)函數(shù)的調(diào)用,但這確實(shí)是可笑的不直觀的。.git/configrepo.Branch

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
我做到了:
創(chuàng)建對(duì)新分支的本地引用
branchName := "new-branch"
localRef := plumbing.NewBranchReferenceName(branchName)
創(chuàng)建分支
opts := &gitConfig.Branch{
Name: branchName,
Remote: "origin",
Merge: localRef,
}
if err := repo.CreateBranch(opts); err != nil {
return err
}
如果您確實(shí)需要更改為該分支...只是做一個(gè)結(jié)帳(不記得它是否實(shí)際更改為創(chuàng)建的分支與創(chuàng)建)
獲取工作樹(shù)
w, err := repo.Worktree()
if err != nil {
return rest.InternalServerError(err.Error())
}
收款處
if err := w.Checkout(&git.CheckoutOptions{Branch: plumbing.ReferenceName(localRef.String())}); err != nil {
return nil
}
如果要跟蹤遠(yuǎn)程分支
創(chuàng)建遠(yuǎn)程引用
remoteRef := plumbing.NewRemoteReferenceName("origin", branchName)
跟蹤遠(yuǎn)程
newReference := plumbing.NewSymbolicReference(localRef, remoteRef)
if err := repo.Storer.SetReference(newReference); err != nil {
return err
}
- 2 回答
- 0 關(guān)注
- 299 瀏覽
添加回答
舉報(bào)