DEV Community

programmingMonky
programmingMonky

Posted on

Gitの使い方について

本記事では簡単なgitの使い方を説明しています。

筆者の環境

  • OS:windows7 32bit
  • コンソール:power shell

少しだけgitの説明

git はソースコードの変更履歴を管理するソフトウェアです。
特徴としては以下の通りです

  • 管理するソースの大小は問わない
    • Linuxのような2千万行を超える巨大なコード
    • 個人制作の小さなプラングイン
    • など様々なソフトウェアで活用。
  • 長年の利用実績がある
    • 2005年に最初のバージョンが開発され、10年以上の利用実績がある。
  • 無料である

gitが導入されていないことによる課題として以下のものがあります

  • 本番環境で動いているバイナリのバージョンがわからない。
  • 報告されたデータが開発チームのバージョンで再現しない
  • ソースコードのマージは技術力のある技術者が注意深く時間をかけて行っている。
  • 本番にマージされていない他人の変更を手早く取り込んで手元で検証できない。
  • 並行開発で進めているソースが本番と乖離しすぎる

もちろんgitは銀の弾丸ではないので導入するだけで
問題が解決するわけではありませんが、
管理者と開発者の手間は大きく減らすことができます。

早速使ってみよう

1.バージョン管理対象のフォルダへ移動する

まず、バージョン管理を行うフォルダを作りそこに移動します。

cd c:\
mkdir story
cd story

Enter fullscreen mode Exit fullscreen mode

2.gitを初期化する

gitを初期化するにはgit initとコマンドを打ちます

git init

Enter fullscreen mode Exit fullscreen mode

するとstoryフォルダ内に.gitというフォルダが作成されました。

git

gitは内部的な処理でこのフォルダに変更を記録していくようになっています
(gitを利用するだけならこのファイルを自分で触る必要はありません。)

3.記録するするユーザー名を設定する

gitには変更記録として変更内容とともに、だれが変更したか?を記録します。
以下のコマンドであなたの記録に登録する名前とメールアドレスを設定します。

note:hogehogehogehoge@exampleをあなたの名前とメールアドレスにしてみてください。

git config --global user.name hogehoge
git config --global user.email hogehoge@example.com

Enter fullscreen mode Exit fullscreen mode

4.記録対象のファイルを編集する

それではさっそく記録対象のファイルを作成します。
まず最初のバージョンとしてからのファイルを作成します。
適当なエディタでstory直下にmemo.txtという空のファイルを作成してください

PS C:\story> dir


    ディレクトリ: C:\story


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2018/07/11     11:35          0 memo.txt


Enter fullscreen mode Exit fullscreen mode

5.gitに変更したファイルを記録(commit)する

以下のコマンドでgitに変更を登録します。

git add memo.txt
git commit -m "first commit"

Enter fullscreen mode Exit fullscreen mode

2行目の"first commit"が記録するときのメッセージ(コミットメッセージ)
といいます。

実行結果

PS C:\story> git add memo.txt
PS C:\story> git commit -m "first commit"
[master (root-commit) 7bbaaca] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 memo.txt
Enter fullscreen mode Exit fullscreen mode

このコマンド完了後にgit logコマンドでgitの履歴を確認してみましょう。
最初のバージョンが記録されたことがわかります!

PS C:\story> git log
commit 7bbaacae2f0ff56573ce60497ec96db2886cc78e (HEAD -> master)
Author: hogehoge <hogehoge@example.com>
Date:   Wed Jul 11 11:37:55 2018 +0900

    first commit
Enter fullscreen mode Exit fullscreen mode

6.手順4,5を何度か繰り返す

それではmemo.txtに適当なお話を追加しつつ、変更記録をバージョンとして記録していきます。

PS C:\story> echo "A long time ago " >> memo.txt
PS C:\story> type .\memo.txt
A long time ago
PS C:\story> git add .\memo.txt
PS C:\story> git commit -m "add period"
[master 531432b] add period
 1 file changed, 0 insertions(+), 0 deletions(-)

PS C:\story> echo "in a glaxy far," >> memo.txt
PS C:\story> type .\memo.txt
A long time ago
in a glaxy far,
PS C:\story> git add .\memo.txt
PS C:\story> git commit -m "add place"
[master aa3c2de] add place
 1 file changed, 0 insertions(+), 0 deletions(-)


PS C:\story> echo "far away.... ">> memo.txt
PS C:\story> type .\memo.txt
A long time ago
in a glaxy far,
far away....
PS C:\story> git add .\memo.txt
PS C:\story> git commit -m "explain about place"
[master 74768be] explain about place
 1 file changed, 0 insertions(+), 0 deletions(-)
PS C:\story> t

Enter fullscreen mode Exit fullscreen mode

echoコマンドによるファイル書き込みと
バージョン記録をそれぞれ3回行いました。

※typeコマンドは内容確認のために打っています。

memo.txtファイルの内容は以下のように変わっています。

A long time ago
in a glaxy far,
far away....
Enter fullscreen mode Exit fullscreen mode

7.gitの履歴を確認する

それでは記録したバージョンの履歴を確認してみましょう。

git log今までのバージョン履歴はコマンドで確認できます。

※通常は新しい順で表示されますが、今回は--reverseオプションを付けて古い順に表示しています。

PS C:\story> git log --reverse
commit 7bbaacae2f0ff56573ce60497ec96db2886cc78e
Author: hogehoge <hogehoge@example.com>
Date:   Wed Jul 11 11:37:55 2018 +0900

    first commit

commit 531432b6a496d0a9d25b6c43f8bf773baa737c82
Author: hogehoge <hogehoge@example.com>
Date:   Wed Jul 11 11:44:02 2018 +0900

    add period

commit aa3c2de5e9ed92be14ef324878c6354be1c200ea
Author: hogehoge <hogehoge@example.com>
Date:   Wed Jul 11 11:45:21 2018 +0900

    add place

commit 74768be738a0dc3213ca6913ccdca9c6665e5fc7 (HEAD -> master)
Author: hogehoge <hogehoge@example.com>
Date:   Wed Jul 11 11:46:42 2018 +0900

    explain about place    
Enter fullscreen mode Exit fullscreen mode

8.戻したいバージョンに戻してみる(reset)

それではここでバージョン管理システムの威力を発揮させたいと思います。
この例では

  • 1つ目のバージョン:空ファイルの作成
  • 2つ目のバージョン:時間の記載(A long time ago)
  • 3つ目のバージョン:場所の記載(in a glaxy far,)
  • 4つ目のバージョン:場所の補足(far away....)

という風にバージョンを記録してきました。
ここで2つ目のバージョンの状態にファイルの内容を戻してみまたいと思います。

ファイルを戻すのにはgit reset --hard <バージョン>を使います。

commitのid(正確にはコミットのハッシュといいます)はgit logコマンドの結果の各"commit"の右に表示されている値になります。

バージョン commitのid
1つ目のバージョン 7bbaacae2f0ff56573ce60497ec96db2886cc78e
2つ目のバージョン 531432b6a496d0a9d25b6c43f8bf773baa737c82
3つ目のバージョン aa3c2de5e9ed92be14ef324878c6354be1c200ea
4つ目のバージョン 74768be738a0dc3213ca6913ccdca9c6665e5fc7

※このcommitのidの値はは環境によって違ってくるので注意してください。

2つ目のバージョンのcommitは531432b6a496d0a9d25b6c43f8bf773baa737c82ですので
戻すバージョンとしてこれを指定します

PS C:\story> git reset --hard 531432b6a496d0a9d25b6c43f8bf773baa737c82
HEAD is now at 531432b add period
Enter fullscreen mode Exit fullscreen mode

ここでmemo.txtを参照してみます。

PS C:\story> type memo.txt
A long time ago
Enter fullscreen mode Exit fullscreen mode

memo.txtの内容がバージョン2時点での状態に戻せました!

以上が簡単なgitによるバージョン管理の例になります。
gitはもっと高機能ですが、この手順書内の内容だけで、以下のようなことができます。

半期の会計処理中に3月前のデータに矛盾したものが見つかった。
どうやら最新バージョンでは出来ようのないデータらしい。
最新バージョンのソースをローカルにコピーして、
データが作られた時期のバージョンに戻して、
このデータが作成された原因をデバッグで探ろう

といったことができます。

ここで説明した内容はほんの初歩的なものになりますので、
公式のgitのチュートリアルを進めるなどしてさらに理解を深めてください。

https://git-scm.com/book/ja/v2

皆様がgitを学習して更なるバージョン管理の活用を実践されることをご期待します。

Top comments (0)