I am using the following function to simply create a new commit in a branch using go-github
library
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
}
This fails with:
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 []
Why isn't a fast-forward? It is simply a new commit created from an existing branch/commit.
PS: I EXPLICITLY DO NOT want to create new files on my commit.