知ってると便利な git command の紹介
以前のホームページで公開していたスライドの読み物版。公開日は原稿に記載なし。
知ってると便利な git command の紹介
+α 開発プラクティスの共有
📖 概要
普段 VS Code などの GUI から git を操作している人に向けて、知っていると便利な git command を紹介します。 ユースケースに基づいて git コマンドやそのコマンドのオプションを紹介するのでなにかに役立つかなと思いますが、 特に深堀りはしないのであとはご自分で調べてください!(いつか深堀り版を出すかも
※注意 厳密にいうとちょっと違うみたいなやつも用途に合わせて説明を書いています。 (working tree とか index とかを出さないようにしています)
🎯 対象
-
普段 vscode で git を操作している人
-
cli に慣れていない人
🚨 今回紹介しないこと
-
git 自体について
そもそも git を知らない場合はまずは git について調べてください!
🔖 目次
- リポジトリの初期化
- git init
- 変更のステージ
git add <path>
- 変更を commit する
- git commit
- 現在の変更状態を確認したい
-
git status
-
🔖 目次2
- commit 履歴を見たい
- git log
- 変更のステージングを取り消したい
git restore --staged <path>
- 前回の commit を上書きしたい
- git commit --amend
- 特定の commit から branch を作成したい
-
git checkout <commit> -b <new branch>
-
🔖 目次3
-
個人的な Git + GitHub 開発プラクティス
リポジトリの初期化
基本以下でOK
git init
.git ディレクトリが作成されます
❯ ls -a
.git main.v sub.v
https://git-scm.com/docs/git-init
変更のステージ
<path> に変更したいファイルPATHを指定します
git add <path>
今ある変更ファイルを全てステージ
git add -A
https://git-scm.com/docs/git-add
変更を commit する
以下のコマンドを実行するとデフォルトのエディターが開いて commit メッセージを編集することができます
git commit
cli でメッセージも指定する場合は以下(日本語の場合はダブルクオートで囲むと良い)
git commit -m <message>
https://git-scm.com/docs/git-commit
現在の変更状態を確認したい
❯ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: main.v
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: sub.v
https://git-scm.com/docs/git-status
commit 履歴を見たい
git log
短く表示したい
❯ git log --oneline
6e0ad11 (HEAD -> main) update main.v complete
3b757b3 update amend
d4da05f add sub
b712382 first
https://git-scm.com/docs/git-log
変更のステージングを取り消したい
git status コマンドを使います
# 特定のファイルのステージングを取り消す
git restore --staged <path>
# 現在のディレクトリ以下のファイルのステージングを取り消す
git restore --staged .
# ステージングされていないファイルの変更を取り消すときは `--staged` なしで実行する
git restore <path>
前回の commit を上書きしたい
前回のコミットを上書きするには --amend を使います
追加で修正を実施したので上書きしたい(複数ファイルを含む変更も可能
git add <path>
git commit --amend -m "fix: 追加修正"
commit メッセージだけ修正したい
git commit --amend -m "誤字を修正"
特定の commit から branch を作成したい
git checkout <commit> -b <new branch>
個人的な Git + GitHub 開発プラクティス
-
commit
-
Pull Request (出す側)
-
Pull Request (見る側)
commit
- 意味のある単位で commit する
- commit には Why を書く
- commit にそれぞれ背景を書いておく
- メッセージテンプレート例
<type>(任意 スコープ): <タイトル>
[任意 本文]
[任意 フッター]
引用: nice.dev
Pull Request (出す側)
- できるだけ細かい単位で PR を出す
- 作業を開始したら Draft で PR を出しておく
- 作業進捗が可視化される
- セルフレビューをする
- ここで見つかるバグもある
- レビュー観点を PR にまとめておく
- commit log はキレイにしておく
git rebase -iとかが使える
Pull Request (見る側)
- 共有された観点を確認する
- 危険な兆候には立ち止まる
- 簡単に理解できない
- 相手の方が詳しいからOKだろうは危険信号🚨
- 未熟な実装
- メンタルモデルと一致しない
- 簡単に理解できない
- 友好的な態度でレビューする
-
テキストは口頭よりもきつめに感じてしまう場合があるので優しめにコメントを書く
-
その他参考
コードには How
テストコードには What
コミットログには Why
コードコメントには Why notを書こうという話をした
Takuto Wada (@t_wada)、September 5, 2017