2

我正在为嵌入式应用程序开发一些代码。我的嵌入式系统运行 linux/git 并有一个本地编译器,但它们没有网络硬件或功能。我能够愉快地在这些嵌入式系统上安装 USB 驱动器。

我的桌面 PC 上有我的源代码主(裸)git 存储库,并在存储库的克隆中进行了相当多的开发。简单/基本的 git 工作流程很好。

我的设想是在 USB 拇指驱动器上创建存储库的 --bare 克隆,然后在我的嵌入式系统之间进行网络连接。

我希望每个嵌入式系统上的 git 存储库是 USB 存储库的克隆。

所以我设想的工作流程是这样的:

  1. 在我的嵌入式系统之一上进行一些更改。添加并将它们提交到本地 git clone。
  2. 将 USB 拇指驱动器挂载到嵌入式系统,并将更改从本地存储库推送到拇指驱动器存储库。
  3. 在我的台式电脑上安装 USB 拇指驱动器并将这些提交推送到主/裸存储库
  4. 将更改拉入我的桌面开发树。

然后我想做相反的事情:

  1. 对我的桌面工作 git 树进行更改,添加、提交、将它们推送到主存储库。
  2. 在我的台式电脑上安装拇指驱动器,将主更改拉/取到拇指驱动器上的 git clone 中。
  3. 在嵌入式系统上安装拇指驱动器,将更改拉/取到嵌入式系统上的本地工作树中......

最终目标是能够在我的台式 PC 或我的任何嵌入式系统(没有网络能力)上进行开发更改并保持一切同步。

这可能吗?如果没有大量的 git voodoo,这可能吗?

我已经坐下来解决这个问题了几次,并且不断遇到障碍。我不认为我想要在 U 盘上使用 --mirror 的存储库,因为我希望能够通过 U 盘双向推送更改。

我可以将官方主存储库放在拇指驱动器上,并让我所有的工作副本都指向我想的那个,但这并没有让我对我的主副本的安全性产生温暖的模糊感觉,如果它被埋没了。

我希望我能理解并自己做一些“简单”的事情!

4

1 回答 1

1

[这里的假设是我们只是在谈论没有任何额外或插件的常规 git]

是的,确实可以。这里有几件事要记住:

  • git 存储库只是“.git”目录
  • git 存储库不“知道”它在哪里,因此您可以毫无问题地移动或复制它
  • git 存储库有一个文本文件列出了它的“远程”在哪里(即它可以推/拉的地方)
  • 没有“主”git 存储库之类的东西:所有存储库都是平等的

因此,在最原始的情况下,您只需使用“cp -a”复制 .git 目录就可以了。

当然,这不是最好的方法……你可能想要推拉和那种花哨的东西。因此,我们可以将您服务器上的存储库称为 USB 记忆棒和桌面的“远程”(即我们的“主”)存储库。

并将 USB 存储库称为嵌入式系统的“远程”。

最简单的方法如下(您可能已经完成了前两个):

  • 在服务器上创建存储库
  • git 将服务器存储库克隆到桌面上的目录
  • 将 U 盘插入您的桌面
  • git 将服务器存储库克隆到 U 盘上的目录
  • 取出 U 盘并插入嵌入式系统
  • git 将存储库从 USB 棒克隆到嵌入式系统(对所有嵌入式重复最后 2 个步骤)

就是这样。您现在可以从嵌入式推送和拉取到 USB,从 USB 到服务器,从服务器到桌面和 USB。

于 2013-09-12T11:30:02.737 回答