Git Apply补丁后Commit ID未更新,离线环境如何同步GitHub提交?
离线环境同步Git仓库并保持Commit ID一致的方案
用git apply补丁的问题在于,它只修改文件内容,不会生成对应的Git提交,所以中心机的Commit ID自然不会更新。要让中心机的Commit ID和GitHub完全对齐,得用Git专门的离线同步工具git bundle——它能完整传递提交历史,包括Commit ID、提交信息、父提交链等所有Git元数据。
操作步骤
1. 在能访问GitHub的机器上生成bundle文件
- 先拉取GitHub最新提交:
git fetch origin master - 生成包含目标提交范围的bundle:
若知道中心机当前的Commit ID(比如叫old_commit),运行:
如果是第一次同步中心机,直接生成整个master分支的完整bundle:git bundle create repo.bundle old_commit..origin/mastergit bundle create repo.bundle origin/master
2. 在中心机上应用bundle
- 把生成的
repo.bundle上传到中心机 - 先验证bundle的有效性(可选但推荐,避免文件损坏):
git bundle verify repo.bundle - 拉取bundle里的提交到master分支:
如果中心机还未初始化master分支,改用:git pull repo.bundle mastergit fetch repo.bundle master:master
注意事项
git bundle会完整复刻GitHub的提交链,应用后中心机的分支历史、Commit ID会和GitHub完全一致- 每次同步前,务必在有网机器上执行
git fetch origin,确保拿到最新的提交 - 尽量让中心机的master分支保持“只读”状态,不要在上面做本地开发,避免同步时出现冲突
内容的提问来源于stack exchange,提问作者EmaadP
相关产品推荐
相关产品推荐

