🗝️

Gitコマンド入門::statusは、差分を表示!「第四回」

5 min read

Gitコマンド::status

前回「第三回」で、やっと私も、add、restoreの理解が少しだけ深まってきましたね~ また、今回のタイトルに取り上げている、status コマンドは、差分を表示するので、Working Stage Repogitoryに保存されているファイルの差が無ければ、特に何も表示しない。

いや~ これも正直、勘違いしてしまうところでした。status といえば、現在の状態を表示してくると思いがちですが。いえいえ、ちょっとその考え方は改めて、gitは、差分管理のツールなので、差分があるときだけ、表示するんですよね。

そうそう、だから、git add したときに、すでに、README.md の最新ファイルが、Staging Areaにファイルがあって、Working Tree との差が無いので、コマンドエラーも出さないんです。しかも、ちゃんと差分もない事が分かっているので、git status でも表示されない。

[shiozumi@ovs-009 mygit]$ git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

git status -s このスイッチを付けたら、なんの表示もしませんが、エラーでもないし、特に、変化がない状態ですよ! ってことなんですね。その大前提に慣れないと、なんか理解がしずらくなるのが、gitコマンドの難しいところなのかも知れません。

ちなみに前回「第三回」の記事はこちらから~

https://zenn.dev/shiozumi/articles/07887f730074ab

それでは、もう一度、3つの環境の復習から!

Working Tree(linux file folder)
README.md

↓↓↓ git add README.md

Staging Area
README.md

↓↓↓ git commit -m "first commit"

Git Repository
README.md

次に、git restore と、--stage のおさらい!

Git Repository
README.md

↓↓↓ git restore --staged README.md

Staging Area
README.md

↓↓↓ git restore README.md

Working Tree (linux file folder)
README.md

それでは、練習、確認も含めて試してみましょう!

前回と同様に、README.md を編集して、add !

[shiozumi@ovs-009 mygit]$ vi README.md
[shiozumi@ovs-009 mygit]$ cat README.md
# test
# add // <-- ここに一行追加!
[shiozumi@ovs-009 mygit]$ git add README.md
[shiozumi@ovs-009 mygit]$ git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md

今度は、コミット迄、git commit -m "任意コメント"

[shiozumi@ovs-009 mygit]$ git commit -m "任意コメント"
[main cb59c96] 任意コメント
 Committer: shiozumi makoto <shiozumi@ovs-009.e-smile.local>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:

git config --global --edit

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

 1 file changed, 2 insertions(+)

Google翻訳
コミッター:塩住まことshiozumi@ovs-009.e-smile.local
あなたの名前とメールアドレスは自動的に設定されました
ユーザー名とホスト名に。 それらが正確であることを確認してください。
明示的に設定することで、このメッセージを抑制できます。 を実行します
コマンドに従い、エディターの指示に従って編集します
構成ファイル:
git config --global --edit
これを行った後、このコミットに使用されるIDを次のように修正できます。
git commit --amend --reset-author

まあ~ 警告文がインパクト大きくて、なんだか振り回されてしまいますけど(笑)

[shiozumi@ovs-009 mygit]$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

Google翻訳
[shiozumi @ ovs-009 mygit] $ gitステータス
ブランチメイン
あなたのブランチは「origin / main」より1コミット進んでいます。
(「git push」を使用してローカルコミットを公開します)
コミットするものは何もありません。

さらにもう一度、README.md を編集して、git status

[shiozumi@ovs-009 mygit]$ vi README.md
[shiozumi@ovs-009 mygit]$ cat README.md
# test
# add
# (^^) // <-- さらに一行追加!(笑)
[shiozumi@ovs-009 mygit]$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

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:   README.md

これで、いまの状態は、こんな感じですね!

Git Repository Staging Area Working Tree
README.md README.md README.md
test add test add test add (^^)

で、git add README.md を実行すると、以下のようになる。

Git Repository Staging Area Working Tree
README.md README.md README.md
test add test add (^^) test add (^^)

で、git commit -m "コメント" を実行すると、更にこうなる!

Git Repository Staging Area Working Tree
README.md README.md README.md
test add (^^) test add (^^) test add (^^)

動作を、各自で理解するためにも!

git add README.md と、git restore README.md 
git commit -m と、git restore --stage README.md

この2つを組み合わせて実行し、思い通りにファイルの内容が変化すること、git status での表示が、意図した通りになっていることの2点を確認しながら、コマンドを入力すると、理解も深まって、とてもよろしいかと思います。

シナリオ1(全部の環境で同じになる)

vi README.md でファイルを変更!
git add README.md
git commit -m
git restore --staged README.md 
git restore README.md

シナリオ2(README.mdが元に戻る!)

vi README.md でファイルを変更!
git add README.md
git restore --staged README.md 
git restore README.md

自分でコマンド入力のシナリオを作成して、思い通りになるか試してみるのが、一番、理解が深かまりますので、是非、まずは、知っているコマンドだけで、お試しください!

今回「第四回」は、ここまで! お疲れ様でした!(笑)

https://zenn.dev/shiozumi/articles/841732f8f8f012
https://twitter.com/esmile2013