首页 > 解决方案 > 如何在提交 ID 不匹配的两个相同存储库之间创建和应用 git 补丁

问题描述

我从 GitHub 浅克隆了一个 git repo 并将其移动到一个隔离的私有 gitlab 服务器。为了将浅克隆推送到新的仓库,我不得不丢失提交 ID 和标签(我使用了这个答案:链接)。

现在我想在外部创建 git 补丁并将它们移动到私有 gitlab 服务器,以保持私有项目的更新。但我知道 git 补丁依赖于持久提交 SHA 才能工作 - 并且两个项目中的提交 SHA 不匹配。

有没有办法让我创建可用的补丁?

标签: gitpatch

解决方案


但我知道 git 补丁依赖于持久提交 SHA 来工作

是的,如果您用于应用由(如此处所示git am生成的补丁git format-patch

git format-patch <first-commit-hash>^..<end-commit-hash>

但是,如果您使用的是git apply,您应该能够将这些路径应用到您当前的工作目录,而无需检查正确的 SHA1。
请参阅“之间有什么区别?git amgit apply ”。


推荐阅读