[GitBucketで学ぶバージョン管理] #05 - リポジトリをバックアップしよう

前回はGitの基本的な操作と、ファイルがどのようにマネジメントされるのかについてお話ししました。

今回はそうしてマネジメントされた内容を中央のデータベースへバックアップする方法についてお話しします。


バックアップ

中央のデータベースは今回の講座であればGitBucketになります。ここへPCで行った変更の履歴をバックアップすることができます。どうやってバックアップを行うか、何をバックアップするかですが、これはもちろんワーキングディレクトリにあるファイルではなく、リポジトリになります

バックアップはアップロードになるのですが、Gitにそうしたアップロードを行う機能が備わっています。ですからこのアップロード機能をつかってリポジトリだけを中央のデータベースへ更新していきます。


ところで、GitBucketにあるリポジトリはワーキングディレクトリがあるのでしょうか?ファイル一覧があったので、あれがワーキングディレクトリになるのでしょうか。実はGitBucketにはワーキングディレクトリがありません。つまりリポジトリのみの状態にあります。こうしたリポジトリは更新をするために必ず今回のようなアップロードを行う必要があります。


バックアップ先

アップロードを行うということは、「どこへ」という情報も必要になりますよね。ということでGitBucketを見てみることにしましょう。停止している方は「java -jar gitbucket.war」してください。http://localhost:8080にブラウザでアクセスするとみることができましたよね。ここで、myrepoのページを開くと複製するためのURLがあったことを覚えているでしょうか?このURLがアップロードを行う先になります。


手元だと、「http://localhost:8080/git/nalulabo/myrepo.git」になっています。ユーザーを「nalulabo」にしてありますので。しかし長いですね…毎回こんなに長いURLを覚えてはいられません。ということで、短縮ダイアルというかショートカットをつくることができます。「git remote」コマンドです。

コマンドプロンプトやターミナルからPCの「myrepo」フォルダで実行してみてください。こんなふうに表示されませんでしたか?

origin

なんだこれ?と思ったでしょう。これは最初からGitBucketが付けてくれている先ほどのURLの別名なのです。つまり「origin」とGitに言えば、「はいはい、このURLね」としてくれるのです。現在の「origin」がどこを指しているいるのかを確認したければ先ほどのコマンドに「-v」を付けます。

git remote -v

手元では次のように表示されました。

origin http://localhost:8080/git/nalulabo/myrepo.git (fetch)
origin http://localhost:8080/git/nalulabo/myrepo.git (push)

またもや見慣れないキーワードがありますね。「fetch」と「push」です。これらはそれぞれ「とってくる」「押し込む」という意味で、Gitの操作においてはそれぞれ「ダウンロード」「アップロード」を意味しています。


ということは…?そうです。Gitのコマンドで「push」がアップロードということになります。


バックアップ対象

コマンドもわかったし、バックアップする先もわかったので実際にバックアップしてみることにします。しかし、もうひとつわからないことがありませんか?そう、「何を」ですね。

「いやいや、リポジトリって言ったじゃん」となるかもしれませんが、リポジトリにはいくつかの「系列」があるのです。さらに訳がわからなくなったかもしれません。リポジトリには系列がある、というのはどういうことなのでしょうか?


ここで、GitBucketの画面を見てみてください。ここです。

「branch: master」と書いてあります。あえて日本語にすると、「枝:マスター」ということです。そのままブランチと呼びます。本流から分かれた支流ということです。

これはGitが1つの系列だけでなく複数の系列でファイルをマネジメントし、それらごとに更新の履歴を保存しているということです。


では現在のGitBucketはmasterだけということなので、もちろんPCでもmasterブランチだけがある、そして前回コミットしたのはmasterブランチなんだということを確認してみましょう。まず現在のブランチを確認するには「git branch」というコマンドを実行します。

* master

こんな感じに表示されたでしょうか?先頭に「*」がついていますが、複数ブランチが存在しているときに現在ワーキングディレクトリがどのブランチのものかわからなくなるのでマークがついているということです。覚えておきましょう。

ということで、今回のバックアップ対象は「master」ブランチだということです。


バックアップしよう

やっとバックアップすることになりました!ではおさらいです。

  • バックアップのコマンドは「git push」である
  • バックアップ先は「origin」である
  • バックアップ対象は「master」である

ではバックアップしてみましょう。

git push origin master

うまくいったでしょうか?え?ユーザー名を聞かれた?それはそうですね。先ほどのおさらいの中に「だれが」というのがありませんでした。ということでGitBucketで登録しているユーザー名とパスワードをつかって入力してください。

Username for 'http://localhost:8080': nalulabo
Password for 'http://nalulabo@localhost:8080':
Counting objects: 4, done.
Delta compression using up to 4 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (4/4), 330 bytes | 0 bytes/s, done.

Total 4 (delta 0), reused 0 (delta 0)

remote: Updating references: 100% (1/1)

To http://localhost:8080/git/nalulabo/myrepo.git

b4cca8a..1f1d90e master -> master

このような感じでうまくアップロードできたと思います。


それではブラウザのほうでGitBucketのmyrepoページを更新してみてください。PCで更新、追加した内容が反映されていると思います。

追加したファイルをクリックするとファイルの内容が表示されます。PCで記述した内容になっていると思いませんか?

また、コミットメッセージ部分をクリックするとどのようなコミットだったのかが表示されます。

編集した内容がすべて履歴になっていることもよくわかりますよね。


現時点のmasterブランチの状態をそのままzipファイルとしてダウンロードしたくなったら、画面右下の「Download ZIP」ボタンをクリックすると実現することができます。

こういった意味でもバックアップになりますし、このまま配布ということもできるでしょう。


最後に

今回はコミットした変更の履歴をGitBucketへバックアップしてみました。実際には別のサーバーでGitBucketを実行してバックアップとして利用したり、他のユーザーと共有することができます。


次回は一通りのファイルマネジメントについてお話ししたので、おさらいをしつつブランチについてもお話ししていきたいと思います。

もんが(なるーらぼ)

個人でプログラミングの学習サイト「なるーらぼ」を運営しています。
https://nalu-labo.amebaownd.com
PowerShell入門の電子書籍2冊も出版しています。
http://www.amazon.co.jp/dp/B017LJOCJ2

なるーらぼ

ごく自然にプログラミングを楽しむことができる世界をつくるお手伝いをしています

0コメント

  • 1000 / 1000