go-github 및 422로 커밋을 생성할 수 없습니다. 업데이트가 빨리 감기되지 않습니다.

PHPz
풀어 주다: 2024-02-09 17:12:19
앞으로
731명이 탐색했습니다.

无法使用 go-github 和 422 创建提交 - 更新不是快进

PHP 편집자인 Xiaoxin은 go-github을 사용할 때 문제가 발생했습니다. 제출물을 생성할 때 422 오류가 발생하고 "업데이트는 빨리 감기가 아닙니다"라는 메시지가 표시됩니다. 이 문제의 구체적인 원인은 무엇입니까? 어떻게 해결하나요? 다음으로 자세한 답변을 드리겠습니다.

질문 내용

저는 go-github라이브러리

를 사용하여 브랜치에 새 커밋을 간단히 생성하기 위해 다음 함수를 사용합니다. 으아악

이 작업은 실패했습니다:

으아악

빨리 감아보면 어떨까요? 기존 브랜치/커밋에서 생성된 새로운 커밋일 뿐입니다.

ps: 저는 커밋 시 새 파일이 생성되는 것을 절대로 원하지 않습니다.

솔루션

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
}
로그인 후 복사

매개변수commit用于指定新commit的一些信息,包括新commit的parents(구현 참조).

코드에서 새 커밋과 이전 커밋은 동일해야 하며 parents,因此这不是快进推送到分支。为了使其快速推送到分支,新提交的 parents 이전 커밋을 가리켜야 합니다.

다음 변경 사항으로 인해 속도가 빨라질 것 같습니다.

으아악

위 내용은 go-github 및 422로 커밋을 생성할 수 없습니다. 업데이트가 빨리 감기되지 않습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!