Gitリポジトリのバックアップ
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