如何在离线环境下使用Git?

23

我的项目有一些完全离线的测试电脑。我们使用USB驱动器在这些电脑之间传输文件。有些开发工作是在这些电脑上进行的。我们将更新后的文件打包成ZIP文件并将“版本信息”编码到ZIP文件名中。

我的问题是如何最好地使用Git来管理项目办公室电脑和测试电脑之间的sneakernet文件(或存储库等)传输。这不是常常为笔记本电脑用户呈现的正常“用例”,他们在某个角落咖啡馆中“离线”并进行开发,之后再重新连接网络。

有没有人在这样的场景中有经验?


此外,还可以查看git bundle create <file> --all的答案,以传输完整的存储库。

4个回答

14

使用 git bundle 可以轻松地在未连接的计算机上使用 Git。

请参阅其 手册页面


6
您可以在USB驱动器上保留存储库的克隆副本。从没有联网的电脑向USB驱动器执行'push'操作,然后从USB驱动器向中央存储库执行'push'操作即可。
最好将USB驱动器存储库与其自己的工作目录(也在USB驱动器上)进行匹配。然后从离线PC向USB驱动器执行'pull' 操作,再从USB驱动器向中央存储库执行'push'操作。当发生此推送时,如果需要,您可以在USB驱动器上执行合并。

如果你使用git,你实际上不需要一个“中央”仓库,但是,从USB驱动器上的仓库推送和拉取是可行的。 - Chris Frederick
我对于将完整的存储库保存在硬盘上的担忧是大小和可能出现损坏的情况,另外每个开发者都有自己的驱动器,因此同步可能会“丢失”。我确信它适用于某些工作流程。 - Philip Oakley

3
读到这里的读者可能也对在U盘上使用Git进行旅行代码感兴趣,它有很多相似之处。但在我们需要两个人进行 sneakernet 操作(即两个独立的USB驱动器)的环境中可能不适用,但这是一种可能性。
这完全取决于您对传输驱动器的信任程度,以及工具能否在未插入驱动器时正常工作...

3

“我不得不指定 -b master,否则它无法找到某些原因的HEAD引用”是因为克隆捆绑包必须猜测哪个分支是HEAD分支,因为该信息未编码在捆绑包中。尚未找到一种向后兼容的方法来包含这些数据。 - Philip Oakley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接