LoginSignup
3

More than 1 year has passed since last update.

個別にファイルをgit add,git resetする意義

Last updated at Posted at 2022-08-24

どうもaono1234と申します。記事がいいなと思ったらtwitterのフォローもお待ちしております‼
https://twitter.com/takeshi_program

みなさま、gitはうまく使いこなせていますでしょうか?

私ですか?
まだ使いこなせてません(笑)🤪
gitってコマンドが多いんですよ💢

今日はそんなコマンドの中でも基本的なgit addgit resetにフォーカスして記事を書きたいと思います。
ん~よろしく❗❗

1. はじめに

本記事は以下の読者が対象です。

  • プログラミング初心者
  • gitを使ったことがある
  • githubを使ったことがある
  • ステージングエリアがよく分かってない
  • git add ./git reset --hardしか使ったことがない

2. 先に結論

  • コミットメッセージを冗長にしないためにgit add ファイル名git reset ファイル名を使う

3. gitの一連の流れを再確認

ご存じかとは思いますが、gitには「ワーキングツリー」「ステージングエリア」「リポジトリ」という3種類のエリアが存在します。
一連の流れとしては
1. 「ワーキングツリー」でファイルの一部変更して~
2. git add . でステージングエリアにアップして~
3. git commit でリポジトリにアップして~
4. git push でリモートリポジトリにアップして~

このような流れだと思います。

この中で2.のステージングエリアへのアップだけ、何のためにやっているのか疑問に思ったのは私だけではないはず!!😠
このステージングエリアについての理解が大事なのす!!(多分)😤

4. ステージングエリアの操作について

4-1. git add .

git add はワーキングツリーで変更があったファイルをすべてステージングにアップするコマンドです。
試しに3つのファイルを変更し、git add .してみましょう。

【git add .前】
1.PNG

【git add .後】
2.PNG

見慣れた感じですね
この状態でgit commit すると、3つのファイルがリポジトリにアップされます。

4-2. git add ファイル名

では次にgit add . ではなく、git add blog.rbを実行してみましょう!
image.png
blog.rbファイルだけステージングされました。
この状態でgit commitすると、blog.rbファイルだけがリポジトリにアップされます。

4-3. git reset ファイル名

次はgit add .した状態からgit reset blog.rbをしてみましょう。
image.png

この状態でgit commitすると、comment.rbuser.rbがリポジトリにアップされます。

このようにステージングエリアに上げるものを選択してコミットするファイルを指定してるのですねぇ~

5. ファイルごとにgit add,git resetするのはコミットにノイズを乗せないため

新しい機能を作成中に既存コードのバグを発見してしまった😱
急いで修正!😁
そんな経験ありませんか?

このバグ修正だけをコミットしたくないですか?
もしgit add .で「新機能のコード」と「バグ修正のコード」がごっちゃになった状態でcommitしたらコミットメッセージが冗長になってしまいます。

こういう時にgit addgit resetを使えば、「新機能のコード」と「バグ修正のコード」を分けてコミットできるということなのす😤

6. さいごに

今回のような使い方もあるんだなぁ、ぐらいので参考にして頂ければ幸いです。
状況によって使い分けて下さい。

またgitについての記事を書きたいと思ってますのでよかったらご覧くださ~い😀

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3