我在通过GitHub API进行简单的cherry-pick时遇到了麻烦。这一定是可能的,但我不清楚如何操作...
我正在使用C#为Slack开发聊天机器人,以帮助管理Kubernetes环境和GitHub发布,并希望通过热修复功能来扩展它。给定一个环境,它应该创建与当前发布匹配的分支,并将一个或多个提交SHA作为由请求者通过Slack提供的参数,cherry-pick到此分支中。
所有的基础工作都已就绪。使用
我似乎只找到了一个真正的例子https://github.com/tibdex/github-cherry-pick。然而,它并不完全符合我的情况,我很难理解Git的内部工作原理。
我的情况是(从最新到最旧):
在这种情况下,我想要将提交 E 挑选出来,创建一个新的分支,该分支基于提交 C,从而创建一个集合 (A, B, C, E),以便我可以发布。
基本上我需要的是这个bash脚本的GitHub API版本。
任何帮助都受到赞赏!
我正在使用C#为Slack开发聊天机器人,以帮助管理Kubernetes环境和GitHub发布,并希望通过热修复功能来扩展它。给定一个环境,它应该创建与当前发布匹配的分支,并将一个或多个提交SHA作为由请求者通过Slack提供的参数,cherry-pick到此分支中。
所有的基础工作都已就绪。使用
POST /repos/:owner/:repo/git/refs
,我能够创建与特定发布相匹配的分支。这意味着我已经准备好了分支名称
、提交SHA
和树SHA
,可以进行下一步操作:将一个或多个提交SHA cherry-pick到此分支中。使用POST /repos/:owner/:repo/git/commits
,我能够创建一个提交,但我不确定要使用哪个树和/或父提交 - 这可能会导致我调用POST /repos/:owner/:repo/merges
时遇到问题,因为它会返回状态码409(合并冲突),而本地上当然没有这种情况。我似乎只找到了一个真正的例子https://github.com/tibdex/github-cherry-pick。然而,它并不完全符合我的情况,我很难理解Git的内部工作原理。
我的情况是(从最新到最旧):
* commit E (current state of `master`)
* commit D
* commit C (deployed to environment)
* commit B
* commit A
在这种情况下,我想要将提交 E 挑选出来,创建一个新的分支,该分支基于提交 C,从而创建一个集合 (A, B, C, E),以便我可以发布。
* commit E (current state of `master`)
* commit D
|
| * commit E (new branch, to be deployed)
|/
* commit C (deployed to environment)
* commit B
* commit A
基本上我需要的是这个bash脚本的GitHub API版本。
git checkout -b {new-branch-name} {sha}
git cherry-pick {sha}
git push main {new-branch-name}
任何帮助都受到赞赏!