😕

LinuxさんでGitを使う~コミット、履歴の確認~

2021/01/15に公開

はじめに

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

概要

■差分の表示と再コミット
■変更の履歴を確認する

をまとめた!!!^^

■差分の表示と再コミット

ワークツリーの状態はgit statusコマンドで
ワークツリーを確認することができる。

ワークツリーの状態を確認する
$ git status
On branch master
nothing to commit, working tree clean

クリーンな作業スペースである。つまりファイルの中に変更されているものがない。ということだ。

さらに日記に昨日実際にあった出来事を追記する。

suidou0113.txt
#2020/01/13
私の会社には小さな会社だがトイレが二つある。
職人さん用のトイレとお客さん、女性用トイレだ。今週は私がトイレ掃除当番。
私は今朝も今週のルーティンであるトイレに向かった。
場所につくと私は職人さん専用トイレから異様な匂いがするのを感じた。
異常事態が発生しているのはトイレのドアを開けなくても容易に分かった。
これは...

途中まで追記した。
ワークツリーの状態を確認する。

ワークツリーの状態を確認する
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   suidou0113.txt

no changes added to commit (use "git add" and/or "git commit -a")

なんて書いてあるのかよくわからないので翻訳機にかけてみた。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
支店長の場合
変更はコミットのためにステージされていません。
(コミットされる内容を更新するには "git add <file>..." を使用します)
(作業ディレクトリの変更を破棄するには "git restore <file>..." を使用します)
変更点: suidou0113.txt
コミットに変更が加えられていません ("git add" や "git commit -a" を使用します)。
コミットしたら差分の確認をするためにgit diffコマンドを使って差分の確認をする。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

ーーー支店長!?(^^)
よくわからないけど、このファイルはまだステージ(インデックスに)にあげられていないってことが書いてあるのはわかる!
ちなみにインデックスにあげることをステージにあげるともいうらしい。
ステージにあげて記録写真をとるイメージだそうだ。
インデックスに早速あげたいが、あげる前にどんな変更があったのか確認する。

差分の比較を確認するのは git diff コマンドを使用する。

差分を表示する
$ git diff
diff --git a/suidou0113.txt b/suidou0113.txt
index b1f8228..31b08c8 100755
--- a/suidou0113.txt
+++ b/suidou0113.txt
@@ -1,4 +1,7 @@
 #2020/01/13
 私の会社には小さな会社だがトイレが二つある。
 職人さん用のトイレとお客さん、女性用トイレだ。今週は私がトイレ掃除当番。
 私は今朝も今週のルーティンであるトイレに向かった。
+場所につくと私は職人さん専用トイレから異様な匂いがするのを感じた。
+異常事態が発生しているのはトイレのドアを開けなくても容易に分かった。
+これは...

git diffコマンドではunified形式で差分が表示される。
差分の比較は色んな形式で表示する方法があるが
unified形式は1つ目のファイルの内容と2つ目の内容を合わせた状態で出力する。
ちなみにcontext形式という表示形式もあってcontext形式は1つ目のファイルの内容と2つ目のファイルの内容を別々に出力する。

間違った内容をインデックスに上げないように、インデックスに上げる前にgit diffコマンドでどう変わったのか確認するといい!('_')

問題ないのでこのままインデックスにあげる。

$ git add suidou0113.txt

リポちゃんに変更内容をコミットする。
-mオプションをつけないでコミットすると自動的にログメッセージを記述するためにvimエディタが開かれる。どっちにしろ変更内容を記述しろよってことなんだね('_')よくできてる!
こんな感じ?↓

オプションなしでコミットすると強制ログメッセージ
$ git commit
	
(※vimエディタが自動でひらいて強制ログメッセージ入力。)
	
[master 59151f0] 日記の内容を変更した
 1 file changed, 4 insertions(+), 1 deletion(-)

vimエディタでのログメッセージは、一番上に

変更の内容
空行
詳細メッセージ(変更の理由)

って
書くのが一般的らしい!('_')

■変更の履歴を確認する

これまで2回リポちゃんにコミットした。
変更の履歴を確認するには、git logコマンドを使う。

$ git log
commit 59151f084c886a15fe60cf14b60aa6778b837254 (HEAD -> master)
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新規作成

commitから始まる行が一つ分の変更を表す。
新しいのが一番上で、古いのがしたにあるみたいだ。
一緒に差分も確認したいときはオプションに-pを付ける。unified形式ででてくる。

履歴表示で差分も表示する
$ git log -p
(※ずらーっとでてくる)

現在(最後にした)のコミットと指定したコミットの差分を表示したい。
このようなときはオブジェクト名をdiffコマンドで指定する。
オブジェクト名はgit logで出力したcommitに続く40文字程度の文字の羅列のことだ。

こいつ!↓
commit bcbf354588e6b7e9d1e6d60716f84ff4f194a6eb(←こいつ!)

オブジェクト名はめっちゃ長いが、一意で定まる範囲なら後ろは省略することも可能だ。
頭7,8文字が指定できれば大丈夫らしい。

現在(最後にした)のコミットと指定したコミットの差分を表示
$ git diff bcbf35458
diff --git a/suidou0113.txt b/suidou0113.txt
index b1f8228..31b08c8 100755
--- a/suidou0113.txt
+++ b/suidou0113.txt
@@ -1,4 +1,7 @@
 #2020/01/13
 私の会社には小さな会社だがトイレが二つある。
 職人さん用のトイレとお客さん、女性用トイレだ。今週は私がトイレ掃除当番。
 私は今朝も今週のルーティンであるトイレに向かった。
+場所につくと私は職人さん専用トイレから異様な匂いがするのを感じた。
+異常事態が発生しているのはトイレのドアを開けなくても容易に分かった。
+これは...

一瞬まとめ
|コマンド|意味|
| --- | --- | --- |
|git init パス|リポジトリを作成|
|git add|インデックスにあげる|
|git commit|コミットする(強制ログメッセージ)|
|git commit -m|メッセージを一緒にコミットする|
|git status|ワークツリーの状態表示|
|git diff|差分の比較|
|git log|履歴の表示|
|git log -p|差分履歴の表示|

まとめ

ねむい!(>_<)

Discussion