git log –oneline –graphとは何か?
gitのコミット履歴を見やすく表示する簡単なオプションに--oneline --graph
があります。
「–oneline」と「–graph」を組み合わせたものです。
他人の環境などエイリアスを設定してない環境でログを確認する場合など、直打ちしなければいけない場合はこのオプションを使うのが便利です。
以下のような形でコミットの流れを一覧で確認することができます。
–onelineオプションとは何か?
–onelineはgit logと合わせてよく使われる便利オプションの一つです。onelineという名の通り、各コミット履歴を一行で表示します。
–oneline有り無しの違い
–onelineが無い場合
$ git log
commit 0adba468d548b1b4b2bea02104b6dc9a8f2ea0fa (HEAD -> test, origin/main, main)
Author: test user <examole@xxx.co.jp>
Date: Mon Jan 24 12:07:03 2022 +0900
[F]edit class name
–onelineオプションをつけない場合は、コミットした人の情報、いつコミットしたかといった情報を確認することができます。
–onelineが有る場合
$ git log --oneline
0adba46 (HEAD -> test, origin/main, main) [F]edit class name
b80abcb [A]test Components UserDetail
–onelineの表示内容
git log --oneline
で表示される内容は、以下3つの主要な情報です。
①コミットオブジェクトのハッシュ値(省略形)
コミットオブジェクトのハッシュ値(省略形)とは「4f919da1d
」といった数値と記号のことです。
冒頭からの7桁(重複が発生する場合は、重複しないだけの最小桁数)を表示します。
省略なしの場合は「4f919da1d5b3f845d0b7310ccb6dd58c0f6503fa
」のようになります。
②参照名
参照名とはコミット番号のハッシュ値の横の( )で表される部分です 例:(HEAD -> main)
HEAD、ブランチ、タグ、ローカルのリモートブランチがどのコミット履歴を指しているかを示しています。
どのブランチもそのコミット履歴を指していない場合参照名は表示されません。
③コミットメッセージ
最後に各コミット履歴に対応するコミットメッセージが表示されます。
例:Merge pull request #21193 from atom/fs-admin-0.15.0
–graphオプションとは何か?
git log --graph
を使うとコミットの流れをグラフで表示することができます。
一番左側にパイプ(|)や斜線が表示されています。
$ git log --graph
* commit 4f919da1d5b3f845d0b7310ccb6dd58c0f6503fa (HEAD -> master)
|\ Merge: 584476934 8fbf5ff50
| | Author: Sadick <sadickjunior@gmail.com>
| | Date: Fri Sep 11 21:44:31 2020 +0300
| |
| | Merge pull request #21193 from atom/fs-admin-0.15.0
| |
| | ⬆️ fs-admin@0.15.0
| |
| * commit 8fbf5ff503e002022f0d9df8cefdac19c4b83f5e
| | Author: runner <runner@Mac-1773.local>
| | Date: Thu Aug 20 03:11:49 2020 +0000
| |
| | :arrow_up: fs-admin@0.15.0
| |
* | commit 584476934785cf5a8df83f428912559e5eacc764
|\ \ Merge: e4701771b af6f4e67f
| | | Author: Musa Ibrahim <small_musa@hotmail.com>
| | | Date: Fri Sep 11 16:51:13 2020 +0100
主な表記は以下のようになります。
*
|\
参照名(ref name)とは何か?
例えば、git log --oneline
を実行すると以下のようにコミット履歴が表示されます。(–onelineオプションはコミット履歴を一行ずつ表示するオプションです。)
$ git log --oneline
0adba46 (HEAD -> main, origin/main) [F]edit class name
b80abcb (test) [A]test Components UserDetail
参照名(ref name)とは、コミットのハッシュ値の後ろに表示されるカッコで囲まれた部分のことです。
(HEAD -> main, origin/main)
(test)
参照名は、各ローカルブランチがどのコミット履歴を指しているか、ローカルと紐づけた各リモートレポジトリのコミット履歴がどこを指しているか、現在のブランチはどのコミットにいるかを示しています。
実際の開発でも多用する非常に重要な情報です。
主要な参照名の意味(HEAD、main、origin/main)
以下の参照名には大きく分けて「HEAD->」「main」「origin/main」「test」の4つがあります。
$ git log --oneline
0adba46 (HEAD -> main, origin/main) [F]edit class name
b80abcb (test) [A]test Components UserDetail
HEAD->
「HEAD->」は現在のコミット履歴を参照しているブランチがどこかを表しています。HEAD -> main
は、現在のブランチが「main」にいることを示しています。
origin/main
「origin/main」はリモートに同期したリモートレポジトリ名originのmainブランチの最新のコミットの場所を指しています。(「リモートレポジトリ名/ブランチ名」と対応しています)
「リモートに同期した」というのが分かりにくいかもしれないので、追加で解説します。
リモートレポジトリはGithub上に存在します。リモートレポジトリのコミット履歴をローカルレポジトリに取り込んだときに、「リモートレポジトリ名/ブランチ名」のコミット履歴が更新されます。
このため、自分以外の他の人が該当するGithub上のリモートレポジトリのコミット履歴を前に進めた場合、ローカルの「リモートレポジトリ名/ブランチ名」が指す最新のコミット番号は、Github上のリモートレポジトリとずれます。
もし、ローカルレポジトリに同期しているリモートレポジトリの状態を最新に更新したい場合は「git fetch」を実行してください。
test
2つ目のコミット履歴の参照名は「test」になっています。
これはローカルレポジトリの「test」ブランチは、このコミット履歴にいますよということです。
testブランチがmainブランチのコミット履歴を取り込めば、「test」は「main」や「origin/main」と同じ場所に来ます。
実際にtestブランチに移動して、mainブランチの内容を取り込むと以下のようになります。
#testブランチに移動
$ git checkout test
Switched to branch 'test'
#mainブランチのコミット履歴を取り込む
$ git rebase main
Successfully rebased and updated refs/heads/test.
#コミット履歴を表示
$ git log --oneline
0adba46 (HEAD -> test, origin/main, main) [F]edit class name
b80abcb [A]test Components UserDetail
(HEAD -> test, origin/main, main)
と表示され、「test」が「main」や「origin/main」と同じ場所に来ていることがわかります。
なお、現在はtestブランチにいるので、「HEAD->」は「test」を指しています。
–onelineと–pretty=onelineの違い
--oneline
と似たオプションに--pretty=online
があります。
–prettyは表示フォーマットを指定するオプションです。表示内容にonlineを指定すると一行で表示します。
–onelineとの違いは、コミットオブジェクトのハッシュ値が省略形にならない点です。
–onelineと–pretty=onelineの違い実例
–onelineの場合
$ git log --oneline -1
4f919da1d (HEAD -> master) Merge pull request #21193 from atom/fs-admin-0.15.0
なお、–onelineの後ろの「-1」は表示するコミット履歴の数を指定しています。「-1」なので1つだけ表示します。
–pretty=onelineの場合
$ git log --pretty=oneline -1
4f919da1d5b3f845d0b7310ccb6dd58c0f6503fa (HEAD -> master) Merge pull request #21193 from atom/fs-admin-0.15.0
–pretty=onelineの場合はコミット履歴が長いことがわかります。
–pretty=oneline –abbrev-commit
コミット番号のハッシュ値を省略表記するオプション--abbrev-commit
を使って、--pretty=oneline --abbrev-commit
とすると表示内容は--oneline
と同じになります。
–pretty=oneline –abbrev-commitの場合
$ git log --pretty=oneline --abbrev-commit -1
4f919da1d (HEAD -> master) Merge pull request #21193 from atom/fs-admin-0.15.0