使用 --amend 提交重写后,CodeCommit 失败

Posted

技术标签:

【中文标题】使用 --amend 提交重写后,CodeCommit 失败【英文标题】:CodeCommit fails when after commit rewrite with --amend 【发布时间】:2021-01-29 10:31:19 【问题描述】:

我们正在使用 AWS Elastic Beanstalk 和 eb cli 进行部署。

我们偶然发现的一个问题是无法重写提交。

在运行 git commit --amend 之后尝试使用 eb deploy 进行部署时,我们收到以下错误:

错误:InvalidParameterValueError -“向 CodeCommit 发出请求时出错:无法检索 0fb2ddf61003f05e67aeabe...(服务:AWSCodeCommit;状态代码:400;错误代码:CommitIdDoesNotExistException;请求 ID:bee56acc-201b-4a3f-...-。 ..)”

在运行git commit --amend 之后,我们如何克服它并进行部署?

解决方案:

eb codesource local,禁用 CodeCommit 集成。

很奇怪,CodeCommit 是部分集成的。它正在执行某种跟踪 - 因此出现错误,但是在运行 eb use --source codecommit/myrepo/mybranch 时它失败了:

错误:NotFoundError - 未找到 CodeCommit 分支:

欢迎任何能对该主题有更多了解的人。

【问题讨论】:

【参考方案1】:

阅读“Configuring additional branches and environments ”,并考虑到任何修改都会重写历史记录(至少更改 HEAD 提交),您可能需要:

强制推送 重新指定用于 eb 环境的分支源

即:

git push --force
eb use --source my-app/myBranch <eb-environment>

OP Gapi 报告实际上必须停用 codecommit:

eb codesource local

【讨论】:

谢谢,我试过了,得到:错误:InvalidOptionsError - EBCLI 不支持源位置“repo ...” @Gapi 语法我不是很了解,但是查看官方文档:docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-use.html。我可能错过了codecommit/ 谢谢,它仍然失败 - 没有找到分支。现在我已经通过禁用 CodeCommit 集成来“解决”它(请参阅我编辑的问题)。 @Gapi 好的。我已经更新了答案,并会检查我是否找到任何解释为什么需要这样的步骤

以上是关于使用 --amend 提交重写后,CodeCommit 失败的主要内容,如果未能解决你的问题,请参考以下文章

可能破坏/重写历史的 Git 命令

Git修正提交(amend)

如何重写到覆盖历史的分支?

Git中使用amend解决提交冲突

Git常用的操作指令

如何跳过“git commit --amend”中的提交消息步骤? [复制]