Gitリポジトリのバックアップ

2019年5月25日

GitLabやGitHub(利用中止予定)に多数のリポジトリを作成している。大丈夫だとは思うのだが、一応バックアップはしておきたい。どうすればよいのか。

つまり、バックアップ専用のBareリポジトリを作成し、そこでは何の編集も行わず、単純に取り込むだけとする。一日に一度cronなどでGitLab/GitHubの最新の状態を反映させることにする。

特にGitlabのバックアップを全自動で行うJavaプログラムをAPIを使用してGitLabリポジトリを自動バックアップするに置いたので参照されたい

バックアップのみを行う(ワーキングツリー不要)

バックアップ用Bareリポジトリの作成

GitLabの場合、例えば以下のようにすればよい。

git clone --mirror https://ユーザ名:パスワード@gitlab.com/ユーザ名/foobar.git
あるいは
git clone --mirror https://ユーザ名:パスワード@gitlab.com/グループ名/foobar.git

すると、foobar.gitというリポジトリが作成される。

ちなみに、–mirrorと記述がある場合と、–bareとしている場合が検索では見つかる、後述の参考文献によれば。

git clone –mirror is prefered over git clone –bare because the former also clones git notes and some other attributes.

とのことで、–mirrorが推奨されるとのことだ。

定期的な更新

あとは、cloneを使い

cd foobar.git
git fetch --all

とすれば良いようだ。が、これも–allのあるものと無いものが検索では見つかる。–allが無いとmasterだけをfetchするという意味になるのだろうか?今のところ良くわからない。

ワーキングツリーを公開専用にする

ときにはワーキングツリーを公開専用としたい場合もある。

git clone https://ユーザ名:パスワード@gitlab.com/ユーザ名/foobar.git -b master

これでmasterの内容を公開する。「-b master」を省略した場合のデフォルトはmasterになる。

なぜかこの場合には、フォルダがfoobarになる。後は定期的にpullする。

cd help
git pull

参考