git push --镜像失败

问题描述 投票:0回答:1

我的团队使用 AWS CodeCommit,我的公司提供内部托管的 GitHub 服务。

我们在 GitHub 的 CodeCommit 中保留了一个存储库的“镜像”。也就是说,GitHub 中的存储库仅通过 AWS 的推送进行更新。 GitHub 中的存储库旨在成为 CodeCommit 中内容的镜像。 我们有一个 AWS CodeBuild 项目,当提交到 CodeCommit master 时,它会执行

git push --mirror
。这工作了好几年没有问题,最近它停止工作了,我被难住了。这是间歇性故障。我见过它失败 3 次,成功一次,然后又不断失败。这是错误。

git push --mirror [email protected]:TeamOrg/project-x.git
To git.companyname.com:TeamOrg/project-x.git
   70614194..8d256e66  origin/master -> origin/master
 * [new branch]        origin/bug-fix -> origin/bug-fix
 ! [remote rejected]   master (refusing to delete the current branch: refs/heads/master)
error: failed to push some refs to '[email protected]:TeamOrg/project-x.git'

我比较了 CodeCommit 和 GitHub 中主存储库之间的提交历史记录。我希望在 GitHub 中找到 CodeCommit 中没有的提交;这可以通过执行

git push --rebase
来解决,历史记录是相同的,除了 CodeCommit 有尚未推送到 GitHub 的新提交,因为我们的推送已损坏。

关于如何查找原因有什么想法吗?

我考虑过在推送中添加

--force
和/或
--rebase
选项,但我更愿意在猜测解决方案之前先了解问题;特别是因为问题是间歇性的。

git github aws-codecommit amazon-codebuild
1个回答
0
投票

看起来源存储库没有本地

master
分支(它只提到了
origin/master
分支)。

如果确实如此,

git push --mirror
将尝试删除github存储库上的
master
分支,并且由于分支保护规则,此操作可能会被拒绝。


仔细检查您想要的最终结果。

例如:令人有点惊讶的是,您的 AWS 存储库具有远程分支(例如:存储在

refs/remotes/origin/*
下的引用)而不是“本地”分支(至少是 AWS 存储库本地的,存储在
refs/heads/*
下的引用)。

这可能是某人从本地存储库运行

git push --mirror
到 AWS 远程的影响。

您可以运行

git ls-remote [aws_remote]
查看其中存储了哪些引用。

一旦您同意存储在该 aws 存储库上的引用,请调整 github 上的设置 - 例如:如果这是所需的结果,请删除

master
分支,如果推送到 github 时出现任何错误,请调试问题。

© www.soinside.com 2019 - 2024. All rights reserved.