Git リポジトリのステータスの取得

完了

ローカルの Git リポジトリのステータスを取得するには、status コマンドを使用します。 このコマンドにより、追跡されていないファイルや追加または削除されていてコミットが必要なファイルが表示されます。

git status

このコマンドを実行すると、次のような結果が得られます。

On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    BodyType.al

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Car.al
        CarCard.al
        CarList.al

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

このコマンドでは、ファイルを追加または削除するために使用できる他のコマンドも表示されます。 たとえば、Car.al ファイルをステージング領域に追加すると、status コマンドの結果は次のようになります。

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   Car.al

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    BodyType.al

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        CarCard.al
        CarList.al

このステータスの概要には、ステージング領域と作業ディレクトリの一連のファイルが表示されています。 結果をもっとシンプルにするには、status -s オプションを使用します。 そうすると、ファイルが一覧で表示されます。 最初の列にはステージング領域のファイルのステータスが示され、2 番目の列には作業ディレクトリのファイルのステータスが示されます。

次の例では、BodyType.al ファイルが作業領域 (2 番目の列) で削除されていますが、まだステージングされていない (最初の列にステータスがない) ことがわかります。 Car.al がステージング領域に追加されているため、ステータスが A で示されています。残りの 2 つのファイルはどちらもまだ追跡されていないため、作業ディレクトリとステージング領域のどちらにもファイルのステータスは示されていません。

 D BodyType.al
A  Car.al
?? CarCard.al
?? CarList.al

Git ディレクトリに対して実行されたコミットの一覧を取得するには、log コマンドを使用します。 log コマンドでは、それぞれのコミットの詳細を表示するいくつかのオプションも使用できます。

git log

基本的な log コマンドでは、コミットの一覧と作成者、日付情報、コミットのメッセージが表示されます。

commit e50111d6d92f0107e97924e5d9ee3c785a10e194 (HEAD -> master)
Author: Your Name <yourname@xyz.com>
Date:   Tue May 12 15:40:29 2020 +0200

    Initial Commit

-p オプションを使用すると、コミットの内容と前回のコミットとの差分も表示されます。

commit e50111d6d92f0107e97924e5d9ee3c785a10e194 (HEAD -> master)
Author: Your Name <yourname@xyz.com>
Date:   Tue May 12 15:40:29 2020 +0200

    Initial Commit

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8e38d70
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.alpackages/*.app
+*.app
+.vscode/launch.json
+.vscode/rad.json
diff --git a/BodyType.al b/BodyType.al
new file mode 100644
index 0000000..7fce165
--- /dev/null
+++ b/BodyType.al
@@ -0,0 +1,29 @@
+enum 50100 "Body Type"
+{
+    Extensible = true;
...

log のその他の便利なオプションとしては、--stat があります。このオプションでは、コミットによって変更された行数が表示されます。

git log --stat

commit e50111d6d92f0107e97924e5d9ee3c785a10e194 (HEAD -> master)
Author: Your Name <yourname@xyz.com>
Date:   Tue May 12 15:40:29 2020 +0200

    Initial Commit

 .gitignore  |  4 ++++
 BodyType.al | 29 +++++++++++++++++++++++++++++
 app.json    | 39 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 72 insertions(+)

--graph オプションでは、異なるブランチやマージを含むさまざまなコミットの概要がグラフィカルに表示されます。 --pretty オプションでは、出力を読みやすく、すっきりさせることができます。

pretty には、oneline、short、full、fuller の複数のオプションがあります。

git log \--pretty=oneline \--graph

Visual Studio Code では、ステータスは SCM ウィンドウにすぐに表示されます。 各ファイルのステータスは、A、D、U、M などの文字で示されます。