Gitは学習したコードを管理するためによく使っています。
しかし必要なコマンドを都度調べるだけでは、周辺で必要なコマンドまではインプットできていないことに気づきました!
そこで復習も兼ねて学習し直しましたので記録します。
私が学習したUdemyの講座はこちら。
(ブログの内容は自分で別途調べたものも含まれますので、講座と同じ内容ではない箇所が複数あります。)

前提
- PCはMac
- ターミナルはbash
- Gitはインストール済み
- GitHubアカウント作成済み
- Gitバージョンは2.44.0
- Homebrewインストール済み
Gitバージョン確認とアップグレード
・Gitがインストールされているか確認する
which git
// 結果▶︎Gitプログラムが格納された場所までのパスが表示される
/usr/local/bin/git
・バージョンを確認する
git --version
ちなみに私の環境ではgit -vでも表示されるのですが、上記のコマンドが公式です!
(他のオプション「–verbose」の省略形が-vだそうです)
・Gitのバージョンが最新でない場合にアップグレードできる
brew upgrade git
アップグレードに数分かかるのでお待ちください。
Gitの初期設定
・Gitにユーザー名を登録
git config --global user.name "ユーザー名"
・Gitにメールアドレスを登録
git config --global user.email "メールアドレス"
・デフォルトブランチをmainに設定
git config --global init.defaultBranch main
ローカルリポジトリ作成
・対象のプロジェクトのディレクトリに移動したあと、Gitを設置もしくは初期化
git init
ステージングエリアの管理
・Gitの今の状態を確認する
git status
①ステージングエリアに登録されていない変更を確認できる
// 結果
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
style.css <----------ここが赤色で表示される
test.html <----------ここが赤色で表示される
nothing added to commit but untracked files present (use "git add" to track)
②ステージングエリアに登録されているが、コミットされていない変更を確認できる
// 結果
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: style.css <----------ここが緑色で表示される
new file: test.html <----------ここが緑色で表示される
・ステージング前に変更内容を確認
git diff
// 結果
diff --git a/index.html b/index.html
index 8a05649..14a0f22 100644
--- a/index.html
+++ b/index.html
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title> <----------変更前
+ <title>GitSample</title> <----------変更後
</head>
<body>
・ステージング後に変更内容を確認
git diff --cached
diff --git a/index.html b/index.html
index 8a05649..14a0f22 100644
--- a/index.html
+++ b/index.html
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title> <----------変更前
+ <title>GitSample</title> <----------変更後
</head>
<body>
ちなみにcacheとは「キャッシュ」のことだそうです!
・変更をステージングエリアに登録
git add .
私は基本的に「.(ドット)」をつけてaddしています。
このオプションの意味は「カレントディレクトリ以下の変更を全て」です。
「git add ファイル名」とすると特定のファイルのみがaddされます!
Gitのバージョンが1の時は削除されたファイルは追跡対象外だったのですが、2以上になってそれも対象になりました!
オプションについてはこちらがわかりやすかったです!
※追記
別ブログのgit pullについて色々調べていたところ、「git add .は使うな!」とのブログをいくつか発見しました。
理由は「どこをどう変更したか行単位で確認して後々コミットを見やすく管理するため」というような内容でした。
確かに変更したファイルを一気にステージングするとその後のコミットでコミットメッセージをどこまで詳細に書けばいいかわからなくなるし、長くなりすぎるので、チーム開発等で使う場合は行単位の変更を意識せよとのことでした。変更を確認しながらステージングする際のコマンドは以下になります。
git add -p ファイル名
・ステージングエリアへの登録を戻す
git restore --staged .
–stagedをつけ忘れると変更自体が破棄されるみたいなので、ワーキングツリーで変更を加えないとaddできなくなってしまうみたいです。注意!
ローカルリポジトリへコミット
・ローカルリポジトリへコミット
git commit -m "コミットメッセージ"
コミットメッセージは最終的にリモートリポジトリへプッシュするとそちらにも履歴が表示されます。
面倒ですが、どんな変更をしたのか、わかりやすく短く記しておきましょう!
コミットメッセージは日本語でも大丈夫です!
・コミット履歴を確認
git log
// 結果
commit b43fc05af34ea6b9e7fb26e2a4c916b2604d85f5 (HEAD -> main)
Author: ayakakobayashi <メールアドレス> <----------Gitに登録されている名前とメアド
Date: Wed Apr 24 11:17:12 2024 +0900 <----------commitした時間
style.cssとtest.htmlを作成 <----------コミットメッセージ
一番上の行に書かれている長ーーーい英数字の文字列は、ハッシュ値と呼ばれます。
コミットに固有の識別番号みたいなのを発行してくれます。
ハッシュ値については面白いブログがあったのでリンクを載せておきます。
git logを実行するとbashが他のエディターに切り替わります。
元に戻したい場合は「q」を実行してください!bashに戻ります。
・コミットした内容を詳しく確認
git show
commit b43fc05af34ea6b9e7fb26e2a4c916b2604d85f5 (HEAD -> main)
Author: ayakakobayashi <メールアドレス>
Date: Wed Apr 24 11:17:12 2024 +0900
style.cssとtest.htmlを作成
diff --git a/style.css b/style.css
new file mode 100644 <----------変更した内容を表示
index 0000000..e69de29
diff --git a/test.html b/test.html
new file mode 100644 <----------変更した内容を表示
index 0000000..e69de29
この例だとファイルを新規作成しただけですね!
中身に何かコードを書いている場合は「+」や「-」のマークがついている行が変更内容として表示されるようです。
またgit showは最後にコミットした内容を確認できます。
それ以前の特定のコミット内容を確認したい場合は以下の手順です。
- 「git log」でコミットハッシュ値を特定
- 「git show ハッシュ値」で内容を確認(ハッシュ値は最初の7桁だけでも特定してくれる)
リモートリポジトリへプッシュ
こちらは以前ブログを書いておりますのでご参照ください!
取り消す系のコマンド
・ステージングされる前の変更を元に戻す
git checkout ファイル名
VSCodeで変更した内容をもう一度見てみると、なんということでしょう、変更前に戻っています。
・コミットを取り消す(コミットそのものを削除してコードの変更も元に戻す)
git reset --hard HEAD^
これはコミット、ステージング、ワークツリーの変更を全て取り消すコマンドです。
「コミットだけ取り消したい」、「コミットとステージングは取り消したいけどワークツリーはそのままにしておきたい」などの調整もコマンドのオプションを変えることで可能です!
詳しくは以下のブログがとっても参考になるし、面白いです!
・コミットは残しながら元に戻す
git revert コミットのハッシュ値
git resetはコミット履歴まで全て削除しましたが、こちらのコマンドは「変更内容を元に戻して、その履歴を新たに作成する」ので追いやすくなります。
まとめ
基本的なコマンドだけでもこんなに長くなりました…!
git statusはよく使っていたけど、赤色と緑色の文字の違いを理解していませんでした。
git addのオプションについてもよく知る機会になったので非常に質の良い復習になりましたね!
ここまで読んでくださった皆さま、ありがとうございました。