Git 辞典

Git コースで覚える git のサブコマンドの一覧です。ファイルの操作(pwd・cd・ls・mkdir・touch・cp・mv・rm・less・cat・echo・head・tail・grep・vi・sed・diff・wc・tree・find)は最初から使えます。

gitバージョン管理(記録の書)Lv1 で覚える

git <サブコマンド> [オプション]
git help

ファイルの変更の歴史を記録します。サブコマンド(init・add・commit…)ごとに働きが違います。

git initリポジトリを作るLv1 で覚える

git init [ディレクトリ]
git init --bare パス

今のディレクトリに .git を作り、記録を始めます。--bare は作業ツリーのない共有用(リモート用)のリポジトリ。

$ git init

git status今の状態を見るLv1 で覚える

git status
git status -s

どのブランチにいるか、ステージした変更・まだの変更・追跡していないファイルが分かります。-s で短く(A 追加・M 変更・?? 未追跡)。

$ git status

git addステージに上げるLv2 で覚える

git add ファイル...
git add .
git add -A

次のコミットに入れる変更を選びます(ステージ)。. で今のディレクトリ以下すべて。

$ git add README.md
$ git add .

git commit記録するLv2 で覚える

git commit -m "メッセージ"
git commit -am "メッセージ"
git commit --amend [-m …] [--no-edit]

ステージした内容を 1 つのコミットとして記録します。-a は追跡中のファイルの変更を自動でステージ。--amend は直前のコミットを作り直します。

$ git commit -m "Add README"

git config設定するLv3 で覚える

git config --global user.name "名前"
git config --global user.email メール
git config --list
git config pull.rebase false

--global はすべてのリポジトリ、付けなければ今のリポジトリだけの設定。コミットに記録される名前とメールアドレスを最初に設定します。

git log / git show履歴を見るLv4 で覚える

git log [--oneline] [--graph] [--all] [-n 数]
git log --author=名前 --grep=語 -- ファイル
git show [コミット]
git show コミット:ファイル

新しい順にコミットを表示します。--oneline で 1 行ずつ、--graph で枝分かれ。show はコミットの中身(差分)を見ます。

$ git log --oneline --graph --all

git diff違いを見るLv5 で覚える

git diff
git diff --staged
git diff コミット コミット
git diff main..feature
git diff --stat

引数なしは作業ツリーとステージの違い、--staged はステージと最新コミットの違い。

$ git diff --staged

git restore変更を取り消すLv6 で覚える

git restore ファイル
git restore --staged ファイル
git restore --source=コミット ファイル

作業ツリーの変更を捨てて元に戻します。--staged はステージから下ろす(作業ツリーは残る)。

$ git restore --staged main.py

git rm / git mvファイルを消す・名前を変えるLv6 で覚える

git rm ファイル
git rm --cached ファイル
git mv 古い名前 新しい名前

--cached は追跡だけやめてファイルは残します(間違って追跡したファイルに)。

git branchブランチを作る・一覧Lv8 で覚える

git branch
git branch 名前 [起点]
git branch -d 名前
git branch -m 新しい名前
git branch -a / -v / -vv / --merged

ブランチはコミットを指す名札です。-d はマージ済みのブランチを消し、-D は強制的に消します。

$ git branch feature

git switch / git checkoutブランチを切り替えるLv9 で覚える

git switch ブランチ
git switch -c 新しいブランチ [起点]
git switch -
git switch --detach コミット
git checkout ブランチ / -b 名前 / -- ファイル

HEAD(今いる場所)を移します。-c で作って移動、- で直前のブランチへ。

$ git switch -c feature/login

git mergeブランチを合わせるLv10 で覚える

git merge ブランチ
git merge --no-ff ブランチ
git merge --abort

相手のブランチの変更を今のブランチに取り込みます。一直線なら早送り(Fast-forward)、分かれていればマージコミット。コンフリクトしたら直して add と commit。

$ git merge feature

git tag目印をつけるLv13 で覚える

git tag 名前 [コミット]
git tag -a 名前 -m "メッセージ"
git tag -l "v1.*"
git tag -d 名前

リリースなどのコミットに名前をつけます。-a は作者とメッセージを持つ注釈付きタグ。

$ git tag -a v1.0 -m "First release"

git stash作業を一時しまうLv15 で覚える

git stash [-u] [-m メモ]
git stash list
git stash pop / apply [stash@{n}]
git stash drop / show

まだコミットしたくない変更を一時的に退避して、作業ツリーをきれいにします。pop で戻して一覧からも消します。

$ git stash
$ git stash pop

git resetHEAD を戻すLv17 で覚える

git reset --soft コミット
git reset [--mixed] コミット
git reset --hard コミット
git reset ファイル

--soft は HEAD だけ、--mixed はステージも、--hard は作業ツリーまで戻します(--hard は変更が消える)。HEAD~1 は 1 つ前。

$ git reset --soft HEAD~2

git revert打ち消すコミットを作るLv18 で覚える

git revert コミット [--no-edit]

指定したコミットと逆の変更をする新しいコミットを作ります。共有済みの履歴を消さずに取り消せます。

$ git revert HEAD

git reflogHEAD の動きの記録Lv19 で覚える

git reflog
git reset --hard HEAD@{n}

HEAD がどこを指してきたかの記録です。reset --hard で消えたように見えるコミットも、ここから探して戻せます。

git cherry-pickコミットを 1 つ取り込むLv20 で覚える

git cherry-pick コミット...
git cherry-pick --continue / --abort

別のブランチの特定のコミットだけを、今のブランチにコピーします。

git rebase土台を付け替えるLv22 で覚える

git rebase 土台のブランチ
git rebase --continue / --skip / --abort

今のブランチのコミットを、土台のブランチの先に付け直して一直線にします。共有済みのコミットの rebase は避けます。

$ git rebase main

git remoteリモートを管理するLv27 で覚える

git remote -v
git remote add 名前 URL
git remote remove 名前
git remote show origin

共有用のリポジトリ(リモート)の名前と場所。clone すると origin という名前で登録されます。

git cloneリポジトリを複製するLv27 で覚える

git clone URL [ディレクトリ]

リモートのリポジトリを手元に複製し、origin を登録して最初のブランチを取り出します。

git pushリモートに送るLv28 で覚える

git push
git push -u origin ブランチ
git push origin --delete ブランチ
git push --tags
git push --force-with-lease

手元のコミットをリモートに送ります。リモートに知らないコミットがあると rejected になるので、pull してから送ります。

$ git push -u origin feature

git fetchリモートの変更を取ってくるLv29 で覚える

git fetch [リモート]
git fetch --all --prune

リモートの新しいコミットを取ってきて origin/main などを更新します。自分のブランチはまだ変わりません。

git pull取ってきて取り込むLv30 で覚える

git pull
git pull --rebase
git pull --no-rebase
git pull --ff-only

fetch してから、上流のブランチを今のブランチに merge(または rebase)します。分かれているときはどちらにするか指定が要ります。

git blame行ごとに最後に変えた人Lv35 で覚える

git blame ファイル

ファイルの各行を、最後に変更したコミット・作者・日時と一緒に表示します。

git bisectバグが入ったコミットを探すLv35 で覚える

git bisect start
git bisect bad [コミット]
git bisect good コミット
git bisect reset

良いコミットと悪いコミットの間を半分ずつ調べて、最初に悪くなったコミットを見つけます。

git clean追跡していないファイルを消すLv36 で覚える

git clean -n
git clean -f [-d] [-x]

-n で何が消えるかを確かめてから、-f で消します。-d はディレクトリも、-x は無視しているファイルも。