オフラインで git push または git pull する方法

オフラインで git push または git pull する方法としては,以下の二つがあります

  • USB等のリムーバブルメディアに bare リポジトリを作って,そのリポジトリ経由で pull/push
  • git bundle を使う.push する側で内容を一旦ファイルに保存.pullする側にそのファイルをコピーし,ファイルから fetch & merge(つまりpull) します

頻繁にオフラインで作業するなら前者のUSB等を使った方が早いです

しかしネットワーク障害時等で一時的に使うだけなら git bundle を使った方が楽です.

git bundle を使う場合は次のようにします

step 1) pushしたい側でまず bundle ファイルを作る

$ cd "pushしたい側のディレクトリ"
$ git bundle create hoge.bundle refs/heads/master

これで hoge.bundleという名前のファイルができます

step 2) pullしたい側に hoge.bundleをコピー

step 3) 最後にマージします

$ git fetch hoge.bundle  refs/heads/master:refs/remotes/master
$ git merge refs/remotes/master

refs/heads/master 等は省略せずに,ちゃんと指定したほうが事故が少ないと思います.