🗝️

Gitコマンド入門::add から始めよう!「第二回」

2021/02/05に公開

さあ~ まずは、前回からの復習です!

echo "# note" >> README.md
git init
git add README.md

// この後に続く・・・コマンドは、Gitコマンド~最初の一歩!を参照してください。

https://zenn.dev/shiozumi/articles/b682aef41e8d8a

git init のあとに、add コマンドで、README.md を登録しています。これを、github にアップするところまでが、前回でしたね!


まずは、README.md のファイルの確認と、そのテキストの中身を見てみましょう!

[shiozumi@ovs-009 mygit]$ ls
README.md

[shiozumi@ovs-009 mygit]$ cat README.md
# note

では、早速、git status で確認してください!

[shiozumi@ovs-009 mygit]$ git status
On branch main
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

Google翻訳:
[shiozumi @ ovs-009 mygit] $ gitステータス
ブランチメイン
コミットのためにステージングされていない変更:
(「git add <file> ...」を使用して、コミットされる内容を更新します)
(「git restore <file> ...」を使用して、作業ディレクトリの変更を破棄します)
変更:README.md

add と、restore の両方が案内されていますね!

ということで、add して、restore してその動作を確かめてみましょう!

[shiozumi@ovs-009 mygit]$ git add README.md

git status で確認!

[shiozumi@ovs-009 mygit]$ git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   README.md

Google翻訳:
[shiozumi @ ovs-009 mygit] $ git add README.md
[shiozumi @ ovs-009 mygit] $ gitステータス
ブランチメイン
コミットする変更:
(「git restore --staged <file> ...」を使用してステージングを解除します)
変更:README.md

restore --staged すると、addしたファイルを、ステージングから解除するようです![1]

[shiozumi@ovs-009 mygit]$ git restore --staged README.md

git status で確認!

[shiozumi@ovs-009 mygit]$ git status
On branch main
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

はい! これで、元に戻りましたね!(笑)

Google翻訳
[shiozumi @ ovs-009 mygit] $ gitステータス
ブランチメイン
コミットのためにステージングされていない変更:
(「git add <file> ...」を使用して、コミットされる内容を更新します)
(「git restore <file> ...」を使用して、作業ディレクトリの変更を破棄します)
変更:README.md

ということで、add の反対の動作は、restore --staged なのですが、--staged を省いたらどうなるのかな?! ここにも、書いてあるとおり、作業ディレクリーの変更を破棄とありますけど、、、

[shiozumi@ovs-009 mygit]$ git restore README.md
[shiozumi@ovs-009 mygit]$ git status
On branch main
nothing to commit, working tree clean

なるほど、なるほど、完全に、status から消えましたね! gitの管理から外れました。
つまるところ、完全に勘違いしていましたね。add の反対は、resotre でした。
--staged を付けると、ステージングからの削除ということで、どうやら、そもそものファイル環境以外に、gitの中にも、gitローカル環境がありそうですね。

ざっと、こんなイメージですけど?!
Linuxファイル環境 → git作業ディレクリー環境 → gitのステージング環境 → github

そして、もう一度、add してみると!

[shiozumi@ovs-009 mygit]$ git add README.md

がちょ~ん ><;;

[shiozumi@ovs-009 mygit]$ git status
On branch main
nothing to commit, working tree clean

resotre の反対は、add でもなかった! ><;;
そして、頭の中が真っ白に・・・
こういう時は、まず、落ち着いて・・・

[shiozumi@ovs-009 mygit]$ ll
合計 4
-rwxrwxr-x 1 shiozumi shiozumi 26  25 15:33 README.md

とりあえず、ファイルは残っているが・・・add できないよ!
もう一度、最初からやり直しですね・・・

THE END!!

https://zenn.dev/shiozumi/articles/07887f730074ab
https://twitter.com/esmile2013

脚注
  1. ここで、完全に勘違いしてしまいましたね。--staged のオプションをつけると、Git Repogitory から、Staging Area への移動となります。 ↩︎

  2. git status 結果は、README.md が全ての領域に置いて、同じ状態になったからですね。Working tree Staging Area Repogitory のすべてに置いて、README.md の内容が同じ状態になっていると認識している状態です。ここでも、完全に認識が間違っていました。 ↩︎

  3. よく、私も例えで使うのですが、x + y = 100 の場合h、x の y の組み合わせは、かなり多くなります。つまり、Gitの全体像も分かっていない、コマンドも分かっていない、こういう状態では、多くの過ちを犯すということなんですよね。 ↩︎

Discussion