
Git:リポジトリのバックアップ
ここまでブランチの削除などを行い、リポジトリを整理したうえで、重要な作業内容を紛失しないためのバックアップ手順を説明します。各コマンドには詳しい解説を加えています。
なぜリポジトリのバックアップが必要なのか
これまでGitを用いてプロジェクトを管理し、コミットやブランチ操作を行ってきました。しかし、作業内容や履歴が保存されているリポジトリがディスク故障や操作ミスで失われれば、これまで積み上げた変更履歴がすべて消えてしまいます。こうしたリスクに備えるため、リポジトリのバックアップを作成することはとても重要です。
Gitは、複数のリポジトリ間で履歴を共有する機能があり、これを活用してバックアップ用リポジトリを作成し、そこへ定期的に履歴を送ることで、何かあっても復元が可能になります。

ブランチの削除(おさらい)
バックアップ前に、不要なブランチが残っていれば削除しておきましょう。すでにfeature-name
ブランチを削除していない場合は、以下のコマンドは不要です。
ブランチを削除する
【書式】git branch -d <ブランチ名>
user01@ubuntu:~/git/logview$ git branch -d function-name
Deleted branch function-name (was 9d389a1).
-d
オプションは、既にマージ済みの安全なブランチのみ削除を許可します。
これでリポジトリが整理できました。
バックアップ用リポジトリの作成
Gitでは、作業用ファイル(ワークツリー)のない“純粋な”リポジトリ(ベアリポジトリ)を作成できます。これをバックアップ用として利用します。
バックアップ用リポジトリを作成する
【書式】git --bare init
user01@ubuntu:~$ mkdir -p /home/user01/share/logview.git
user01@ubuntu:~$ cd /home/user01/share/logview.git
user01@ubuntu:~/share/logview.git$ git --bare init
Initialized empty Git repository in /home/user01/share/logview.git/
--bare
オプション付きのgit init
は、ベアリポジトリを作成します。
慣習として、ベアリポジトリは.git
で終わる名前にします。
履歴をバックアップ用リポジトリへ送る
元のリポジトリ(ワークツリー付き)から、バックアップ用リポジトリに変更履歴を送ります。これにはgit push
コマンドを使用します。
git push
コマンド
【書式】変更の履歴を送るgit push <送信先リポジトリ> <送信元ブランチ>:<送信先ブランチ>
<送信先リポジトリ>
:バックアップ先リポジトリのパス<送信元ブランチ>
:バックアップしたいローカルブランチ<送信先ブランチ>
:バックアップ先でのブランチ名(通常は同じ名前)
user01@ubuntu:~/git/logview$ git push /home/user01/share/logview.git master:master
これでmaster
ブランチの内容がバックアップ用リポジトリへ送られます。もし元のリポジトリが壊れても、このバックアップから復元可能になります。
バックアップからの復元(複製)
もし元のリポジトリが消失してしまっても、git clone
コマンドを使えばバックアップ用リポジトリから履歴を複製し、再度作業環境を構築できます。
git clone
コマンド
【書式】git clone <複製元リポジトリ>
user01@ubuntu:~/git/logview$ mkdir -p /home/user01/work
user01@ubuntu:~/git/logview$ cd /home/user01/work
user01@ubuntu:~/work$ git clone /home/user01/share/logview.git
Cloning into 'logview'...
done.
複製先のlogview
ディレクトリには、元の履歴がすべて含まれています。
git push
コマンドを短縮する
毎回長いパスやmaster:master
と入力するのは面倒です。
以下の方法で、より簡便に指定できます。
ブランチ名省略
送信元・送信先ブランチが同じ場合、master:master
をmaster
と省略可能。
user01@ubuntu:~/git/logview$ git push /home/user01/share/logview.git master
Everything up-to-date
リモート名(別名)の設定
git remote add
コマンドで、バックアップ先のリポジトリパスにエイリアスを付けられます。
【書式】git remote add <別名> <リポジトリパス>
user01@ubuntu:~/git/logview$ git remote add origin /home/user01/share/logview.git
origin
という名前は慣習的に用いられます。git remote -v
で確認可能。
user01@ubuntu:~/git/logview$ git remote -v
origin /home/user01/share/logview.git (fetch)
origin /home/user01/share/logview.git (push)
こうすると、次回からは以下のように簡略化できます。
user01@ubuntu:~/git/logview$ git push origin master
Everything up-to-date
さらに省略可能ですが、挙動はやや複雑なため、基本的にはorigin
やmaster
は明示した方が分かりやすいでしょう。
まとめ
- 不要なブランチは削除してリポジトリを整理
- バックアップ用リポジトリ(ベアリポジトリ)を作成
git push
で元のリポジトリからバックアップ用リポジトリへ履歴を送るgit clone
でバックアップ用リポジトリから復元可能git remote add
で別名を割り当て、git push
操作を簡略化
これらの手順を踏むことで、万が一のトラブルにも備えられ、常に安全な状態で開発を進めることができます。定期的なバックアップと、必要に応じた復元手順の理解は、健全なソフトウェア開発環境を維持するうえで欠かせません。