php小編小新在使用go-github時,遇到了一個問題:在建立提交時,出現了422錯誤,並且提示「更新不是快轉」。這個問題的具體原因是什麼呢?該如何解決呢?接下來,我們將為大家詳細解答。
我使用以下函數簡單地使用 go-github
函式庫在分支中建立一個新提交
func ghapicreatecommit(ctx context.context, client *github.client, commitopts *commitoptions) error { // get the reference of the branch ref, _, err := client.git.getref(ctx, repoowner, commitopts.repo, "refs/heads/"+commitopts.branch) if err != nil { return err } commit, _, err := client.git.getcommit(ctx, repoowner, commitopts.repo, *ref.object.sha) if err != nil { return err } commit.message = github.string(commitopts.commitmessage) // create a new commit with the updated commit message newcommit, _, err := client.git.createcommit(ctx, repoowner, commitopts.repo, commit) if err != nil { return err } // attach the new commit to the reference ref.object.sha = newcommit.sha // update the branch reference to point to the new commit _, _, err = client.git.updateref(ctx, repoowner, commitopts.repo, ref, false) if err != nil { return err } return nil }
此操作失敗:
PATCH https://api.github.com/repos/MyOrg/myrepo/git/refs/heads/the-branch-I-am-creating-the-new-commit-to: 422 Update is not a fast forward []
為什麼不快轉?它只是從現有分支/提交創建的新提交。
ps:我明確不想想要在提交時建立新檔案。
func (s *gitservice) createcommit(ctx context.context, owner string, repo string, commit *commit) (*commit, *response, error)
參數commit
用於指定新commit的一些信息,包括新commit的parents
(請參閱實作)。
在您的程式碼中,新提交和舊提交具有相同的 parents
,因此這不是快轉推送到分支。為了使其快速推送到分支,新提交的 parents
應指向舊提交。
我想以下更改會使其快轉:
+ commit.Parents = []*github.Commit{commit} newCommit, _, err := client.Git.CreateCommit(ctx, repoOwner, commitOpts.Repo, commit)
以上是無法使用 go-github 和 422 建立提交 - 更新不是快轉的詳細內容。更多資訊請關注PHP中文網其他相關文章!