跳轉到內容

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.
華夏公益教科書