创建 GIT Bundle 以使用标签维护和升级离线存储库

问题描述 投票:0回答:1

所以这是我使用 GIT 的第一个真正的挑战。我有一个要掌握的个人存储库,我准备好标记和发布。存放我的代码的设备无法访问互联网,因此我需要能够通过 USB 驱动器升级存储库。我一直在阅读捆绑文件,但很难将它们用于我的预期目的。这是到目前为止我的步骤。

在我连接互联网的个人设备上

  1. git结帐
  2. git 捆绑包创建
  3. 将捆绑包复制到闪存驱动器并将其插入没有网络的设备

在没有网络的设备上

  1. 将捆绑包从闪存驱动器复制到本地目录
  2. git克隆

克隆捆绑包后,我收到一条警告,指出“警告:远程 HEAD 引用不存在的引用,无法签出”,并且目录中唯一的项目是 .git 文件。我确信我不是第一个遇到这个问题的人,但一直无法找到有效的解决方案。任何和所有的想法将不胜感激

我希望能够通过捆绑文件维护和更新离线 git 存储库。

linux git github raspberry-pi gitea
1个回答
1
投票

方法1(无捆绑)

可能最简单的方法是完全放弃捆绑包,而是将一个裸存储库放在 USB 记忆棒上(至少,这是我会做的)。

在您的开发机器上(有代码) - 假设您的项目克隆存在

~/src/projectX
并且您已将 USB 记忆棒安装为
/media/user/USBDRIVE

user@devmachine:~/src/projectX$ git init --bare /media/user/USBDRIVE/projectX.git
user@devmachine:~/src/projectX$ git remote add usb /media/user/USBDRIVE/projectX.git
user@devmachine:~/src/projectX$ git push --mirror usb

对于未来的更新,只需再次运行

git push
(假设USB分区在同一路径下可用)

将所有更改同步到 USB 驱动器后,卸载它并将其插入目标系统。 假设 USB 分区再次以

/media/user/USBDRIVE
结尾,请在目标上运行以下命令。系统

pi@device:~$ git clone /media/user/USBDRIVE/projectX.git projectX
pi@device:~$ cd projectX
pi@device:~/projectX$ git checkout v1.0.0

对于未来的更新,只需运行

git fetch; git checkout v1.2.3
(再次假设路径不会改变)

此方法的优点是可以非常轻松地将代码从设备推送回您的开发机器。

方法2(捆绑)

如果出于某种原因,您无法使用上述方法(例如,因为 USB 驱动器上的文件系统太有限),您当然可以使用捆绑包。

技巧是,在创建捆绑包时,您必须提供的不仅仅是一次提交。

user@devmachine:~/src/projectX$ git bundle create /path/to/projectX.bundle HEAD <tag_name>

甚至更好(导出所有已知标签):

user@devmachine:~/src/projectX$ git bundle create /path/to/projectX.bundle HEAD $(git tag)

之后,您应该能够克隆捆绑包并签出您的标签:

pi@device:~$ git clone /media/user/USBDRIVE/projectX.bundle projectX
pi@device:~$ cd projectX
pi@device:~$ git checkout <tag_name>

另请参阅 https://git-scm.com/book/en/v2/Git-Tools-Bundling

© www.soinside.com 2019 - 2024. All rights reserved.