基础设施:我有两个主机(A和B)。我无法从A连接到B,反之亦然。没有可从主机A和主机B访问的主机C。我可以在两个方向上发送电子邮件。文本附件是允许的,其他附件不允许。可能会出现其他问题...
我想要将git存储库从主机A克隆到主机B。我想要能够在两个主机上工作。我想要从A推送我的提交到B,反之亦然。
问题:是否有一种简单的方法来传输提交(可用于我的基础设施)?
我已经尝试过:我可以使用git format-patch
制作我的提交的文本版本。但是生成的文件中只有作者日期,缺少提交者日期和父提交。我可以查看另一个主机-因此我知道这两个信息。然后,我可以使用GIT_AUTHOR_DATE
和GIT_COMMITER_DATE
的git commit
生成具有正确提交哈希的提交。
它有效:) 但我必须输入几个命令。如果我想要传输更多提交,我必须输入更多命令。
git bundle
或者tar
然后对整个内容进行base64
编码?使用format-patch
会得到新的、不同的提交记录(作者和提交者的日期/信息不一定与原始仓库中匹配)。 - knittlgit bundle
。它比我的GIT_AUTHOR_DATE
-GIT_COMMITER_DATE
-hack(也保留了日期)更容易。我会详细尝试一下,但目前看来它似乎是解决方案。 - Shear PlaneGIT_AUTHOR_DATE="2023-04-08T00:00:00" GIT_COMMITTER_DATE="2023-04-09T12:34:56" git commit -m "..."
。然后运行了git cat-file -p head
。在author
行和committer
行中的时间戳是不同的。因此,我认为通过我的方法,可以保留时间戳。我哪里理解错了吗? - Shear Planeformat-patch
创建一个补丁并将其应用于另一个存储库。 作者和提交者日期会发生什么变化? 作者日期被保留,提交者日期为“现在”。 如果您强制提交者日期与补丁的作者日期相同,则现在有一个具有2个相同日期的提交(这与格式化补丁之前的提交不同)。也许我误解了你的意思,你想覆盖来自主机A的每个提交的作者和提交者日期? - knittlgit bundle
建议更好。好得多。 - Shear Plane