跳转到内容

USB 闪存盘上的 Git/仓库

来自维基教科书,自由的教科书,共建共享的世界
< Git

无需依赖托管公司来存储您的中心仓库,也无需依赖中心服务器或互联网连接来贡献项目更改,您可以使用可移动存储器来交换和更新本地仓库。

基本步骤如下:

  1. 将可移动存储器挂载到预定的路径
  2. 在可移动存储器中设置一个裸仓库
  3. 将可移动存储器中的仓库添加为远程仓库

在本文档中,假设仓库将挂载在 /media/repositories。

从头开始

[编辑 | 编辑源代码]

假设我们正在启动一个全新的项目,名为 Foo。参与 Foo 项目的人员将使用可移动存储设备作为整个项目的中心仓库。因此,让我们在 USB 闪存盘中创建一个新的仓库。

首先,我们不会依赖操作系统自动生成的路径名,而是将 USB 闪存盘挂载到自定义路径。假设 USB 闪存盘位于 /dev/sdb1,目标挂载点为 /media/repositories。另一个重要方面是 USB 闪存盘需要以正确的权限挂载,以避免在仓库中出现问题。为了避免这些问题,可以使用您的用户 ID 和组 ID 挂载 USB 驱动器,可以通过以下命令实现:

$ sudo mkdir /media/repositories
$ my_uid=`id -u`
$ my_gid=`id -g`
$ mount -o "uid=$my_uid,gid=$my_gid" /dev/sdb1 /media/repositories

将 USB 驱动器挂载到所需路径后,让我们创建一个裸仓库。

$ cd /media/repositories
$ mkdir /media/repositories/foo
$ git init --bare /media/repositories/foo
Initialized empty Git repository in /media/repositories/foo

完成此步骤后,我们在 USB 闪存盘中创建了一个仓库。现在,只需将 USB 闪存盘挂载到任何计算机上的特定路径,克隆仓库,然后开始工作即可。

$ git clone /media/repositories/foo
Cloning into 'foo'...
warning: You appear to have cloned an empty repository.
done.

完成。

如果挂载点更改为其他路径(在某些情况下,自动挂载会执行此操作),则可以通过以下命令设置仓库的 URL:

$ git remote set-url origin file://<path to new mount point>

将本地仓库推送到 USB 闪存盘

[编辑 | 编辑源代码]

假设您一直在开发一个项目,并且已经拥有一个在桌面上工作的 Git 仓库。现在,您决定想要跟踪和更新该仓库的几个并发版本,而无需使用网络连接。一种可能的解决方案是在 USB 闪存盘上启动一个 Git 仓库,并将该 USB 闪存盘用作中心仓库,每个人都可以将他们的贡献推送到该仓库并更新他们的本地版本。

要在 USB 闪存盘上启动一个 Git 仓库,首先让我们将 USB 闪存盘挂载到选定的路径。这可以通过上一节中描述的过程来实现。

$ sudo mkdir /media/repositories
$ my_uid=`id -u`
$ my_gid=`id -g`
$ mount -o "uid=$my_uid,gid=$my_gid" /dev/sdb1 /media/repositories

假设项目树位于 ~/devel/foo。要在 /media/repositories/foo 上启动一个仓库,请运行以下命令:

git clone --bare ~/devel/foo foo

就这样。

现在,您可以克隆存储在 USB 驱动器中的 Git 仓库,并继续您的项目工作。

$ git clone /media/repositories/foo/
Cloning into 'foo'...
done.

如果您希望将新创建的 USB 仓库作为远程仓库添加到本地仓库,请执行以下操作:

$ git remote add usb file:///media/repositories/foo

要将 USB 仓库的主分支设置为本地主分支的上游分支,必须获取新添加的远程分支的内容,并指定上游分支。此步骤通过执行以下命令来完成:

$ git fetch usb
From file:///media/repositories/foo
 * [new branch]      master     -> usb/master
$ git branch --set-upstream-to=usb/master
Branch master set up to track remote branch master from usb.
华夏公益教科书