Editor PHP Xiaoxin menghadapi masalah semasa menggunakan go-github: semasa membuat penyerahan, ralat 422 telah berlaku dan ia menggesa "Kemas kini bukan ke hadapan pantas". Apakah punca khusus masalah ini? Bagaimana untuk menyelesaikannya? Seterusnya, kami akan memberi anda jawapan terperinci.
Saya menggunakan fungsi berikut untuk hanya membuat komitmen baharu dalam cawangan menggunakan go-github
perpustakaan
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 }
Operasi ini gagal:
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 []
Kenapa tidak pantas ke hadapan? Ia hanyalah komit baharu yang dibuat daripada cawangan/komit sedia ada.
ps: Saya sudah pasti tidak ingin fail baharu dibuat atas komitmen.
func (s *gitservice) createcommit(ctx context.context, owner string, repo string, commit *commit) (*commit, *response, error)
Parametercommit
用于指定新commit的一些信息,包括新commit的parents
(lihat Pelaksanaan).
Dalam kod anda, komit baharu dan komit lama mempunyai komit yang sama parents
,因此这不是快进推送到分支。为了使其快速推送到分支,新提交的 parents
harus menunjuk ke komit lama.
Saya rasa perubahan berikut akan menjadikannya pantas ke hadapan:
+ commit.Parents = []*github.Commit{commit} newCommit, _, err := client.Git.CreateCommit(ctx, repoOwner, commitOpts.Repo, commit)
Atas ialah kandungan terperinci Tidak dapat membuat komitmen dengan go-github dan 422 - kemas kini tidak pantas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!