git 捆绑

2025-05-27

git 捆绑

前几天我在工作中遇到了一个有趣的问题。我们聘请了一些外部承包商来为我们开发一个 Android 应用,现在我们需要从他们那里获取代码并将其上传到我们的私有 GitHub 中。问题是,我无法快速让他们访问代码库,因为获得这些批准需要经过相当多的流程。而且他们也没有足够的席位来将我添加为他们 GitHub 帐户的贡献者,所以我们只能要求他们发送一个包含代码的 .zip 文件。结果,他们返回了一个 git bundle 文件,我之前从未听说过这个文件(尽管我已经使用 git 很长时间了)。git bundle 文件本质上是一个包含完整代码库的单个文件。你可以拥有分支、历史记录、标签,基本上所有你希望在代码库中看到的内容,但它们都包含在一个文件中。这使得共享代码库或移动完整代码库变得非常简单。假设我有一个名为 myproj 的 git 项目,我想将它发送给其他人。

host1$ cd myproj
host1$ git bundle create repo.bundle master
Enter fullscreen mode Exit fullscreen mode

这将生成一个包含 master 分支所有历史记录的 bundle 文件 (repo.bundle)。你可以将这个文件发送给朋友,他们就可以像克隆远程 git origin 一样克隆它:

host2$ git clone -b master ./repo.bundle myproj
host2$ cd myproj
host2$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
Enter fullscreen mode Exit fullscreen mode

git bundles 的另一个巧妙之处在于,如果你需要更新某个 bundle,你可以发送一个只包含最新更改的增量文件更新。接收者只需将其替换到他们现有的 bundle 中,然后git pull在他们的仓库中运行即可。

这不是你每天都会用到的东西,但在某些情况下(比如将 git repo 从一个地方转移到另一个地方而不能共享远程来源)它会非常有用!

有关 git bundle 的更多信息:https://git-scm.com/docs/git-bundle

文章来源:https://dev.to/gabeguz/git-bundle-2l5o
PREV
使用 Firebase Hosting 部署网站
NEXT
软件开发人员薪资谈判的 5 条规则。获得比市场价高出 20% 的薪资