👻

LinuxさんでGitを使う~リポジトリのバックアップ~

3 min read

はじめに

くーばねてすをやっつけるためにLinuxさんと仲良くさせていただいているが、LinuxさんでもなんとGitをインストールしてファイルの変更管理ができるそうだ!
LinuxさんでGit!

概要

■リポジトリのバックアップをとる
■リポジトリの複製をつくる
■バックアップリポジトリに変更履歴をおくろう

をまとめた^^

■リポジトリのバックアップをとる

故障や誤操作でリポジトリ自体がなくなってしまった時のためにリポジトリのバックアップを作成する。
まずはバックアップ用のディレクトリを作成する。
作成場所はどこでもOK(^^)作成するときは慣習としてわかりやすいように末尾に.gitとつける。
今回は~/suidou/suidoudiary.gitにバックアップ用リポジトリを作成する。
バックアップ用リポジトリをディレクトリに設定するのには、バックアップ用ディレクトリに移動して、git init コマンドに--bareオプションをつける。

バックアップ用リポジトリの設定(対象ディレクトリに移動して)
$ git --bare init

やってみる(^^)

$ mkdir -p ~/suidou/suidoudiary.git
$ cd ~/suidou/suidoudiary.git
$ git --bare init
Initialized empty Git repository in /root/suidou/suidoudiary.git/

ディレクトリをバックアップ用リポジトリとして設定できた!(>_<)
ではリポジトリのバックアップをとろうと思う!
バックアップをとるにはバックアップ元にリポジトリへ移動し、git pushコマンドを使う。

変更履歴をおくる
$ git push 送信先リポジトリ 送信元ブランチ名:送信先ブランチ名
やってみる
$ cd ~/git/suidoudiary
$ git push ~/suidou/suidoudiary.git master:master
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (9/9), 1.32 KiB | 1.32 MiB/s, done.
Total 9 (delta 2), reused 0 (delta 0)
To /root/suidou/suidoudiary.git
 * [new branch]      master -> master
※ちゃんと移動したのか確認してみる。 
$ cd ~/suidou/suidoudiary.git(バックアップ用リポジトリへ行く)
$ git log
commit 459b3cc26974493945c14e953c455f41f033614d (HEAD -> master)
Author: suidou <suidou@example.com>
Date:   Sat Jan 16 05:55:00 2021 +0000

    追記

    日記を追記した

commit 59151f084c886a15fe60cf14b60aa6778b837254
Author: suidou <suidou@example.com>
Date:   Thu Jan 14 14:17:42 2021 +0000

    日記の内容を変更した

    日記を追記した

commit bcbf354588e6b7e9d1e6d60716f84ff4f194a6eb
Author: suidou <suidou@example.com>
Date:   Wed Jan 13 14:40:37 2021 +0000

    suidou0113.txt新規作成

ちゃんとバックアップが取れている!(^^)

■リポジトリの複製をつくる

せっかくリポジトリのバックアップに成功したのでバックアップから複製を作りたいと思う。
複製をするには複製先ディレクトリを作成し、複製先ディレクトリへ移動し、git cloneコマンドを使う。

リポジトリの複製をつくる
$ git clone 複製元リポジトリ

やってみる。今回は~/suidou/masterって名前にしてみる!(^_-)-☆

$ mkdir -p ~/suidou/master
$ cd ~/suidou/master
$ git clone ~/suidou/suidoudiary.git
Cloning into 'suidoudiary'...
done
※ちゃんとできたのか確認
$ls
.  ..  suidoudiary
$ cd suidoudiary
$ git log
commit 459b3cc26974493945c14e953c455f41f033614d (HEAD -> master, origin/master, origin/HEAD)
Author: suidou <suidou@example.com>
Date:   Sat Jan 16 05:55:00 2021 +0000

    追記

    日記を追記した

commit 59151f084c886a15fe60cf14b60aa6778b837254
Author: suidou <suidou@example.com>
Date:   Thu Jan 14 14:17:42 2021 +0000

    日記の内容を変更した

    日記を追記した

commit bcbf354588e6b7e9d1e6d60716f84ff4f194a6eb
Author: suidou <suidou@example.com>
Date:   Wed Jan 13 14:40:37 2021 +0000

    suidou0113.txt新規作成

複製できてる!(^^)

■バックアップリポジトリに変更履歴をおくろう

こんな感じで複製やバックアップが簡単にできるので、作業しているリポジトリに変更があったらきりのいいところでバックアップに変更履歴を送ろうと思った!

変更履歴の送信
$ git push 送信先リポジトリ 送信元ブランチ名:送信先ブランチ名

この呪文みたいな長さの引数の指定は省略することができる。
■送信元ブランチ名:送信先ブランチ名がどちらも同じ名前だった時は一つに省略することができる

ブランチ名が同一の時は省略できる
$ git push 送信先リポジトリ ブランチ名(同一)

■リポジトリパスを省略する
リポジトリパスを省略するにはリポジトリに別名を付ける必要がある

リポジトリに別名を付ける
$ git remote add 別名 リポジトリパス

別名は特に何でも構わないが特になければ origin ってのがとりあえず付けられるそうだ。
別名をつけたリポジトリの一覧表示

別名一覧
$ git remote -v 
origin  /root/suidou/suidoudiary.git (fetch)
origin  /root/suidou/suidoudiary.git (push)

■省略!

パスとブランチを省略してpush
$ git push origin master

まとめ

みんなコロナでなにしてるんだろう(>_<)?