どうもaono1234と申します。記事がいいなと思ったらtwitterのフォローもお待ちしております‼
https://twitter.com/takeshi_program
みなさま、gitはうまく使いこなせていますでしょうか?
私ですか?
まだ使いこなせてません(笑)🤪
gitってコマンドが多いんですよ💢
今日はそんなコマンドの中でも基本的なgit add
、git 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 commit
すると、3つのファイルがリポジトリにアップされます。
4-2. git add ファイル名
では次にgit add .
ではなく、git add blog.rb
を実行してみましょう!
blog.rbファイルだけステージングされました。
この状態でgit commit
すると、blog.rb
ファイルだけがリポジトリにアップされます。
4-3. git reset ファイル名
次はgit add .
した状態からgit reset blog.rb
をしてみましょう。
この状態でgit commit
すると、comment.rb
とuser.rb
がリポジトリにアップされます。
このようにステージングエリアに上げるものを選択してコミットするファイルを指定してるのですねぇ~
5. ファイルごとにgit add,git resetするのはコミットにノイズを乗せないため
新しい機能を作成中に既存コードのバグを発見してしまった😱
急いで修正!😁
そんな経験ありませんか?
このバグ修正だけをコミットしたくないですか?
もしgit add .
で「新機能のコード」と「バグ修正のコード」がごっちゃになった状態でcommitしたらコミットメッセージが冗長になってしまいます。
こういう時にgit add
、git reset
を使えば、「新機能のコード」と「バグ修正のコード」を分けてコミットできるということなのす😤
6. さいごに
今回のような使い方もあるんだなぁ、ぐらいので参考にして頂ければ幸いです。
状況によって使い分けて下さい。
またgitについての記事を書きたいと思ってますのでよかったらご覧くださ~い😀