https://zenn.dev/helloyuki/articles/d2fd49db43fcea
git add [ファイル名]
あるいは git add .
くらいしか今まで使ってきませんでした。しかしこの前ふと、「ファイルのこの部分だけはコミットしたいんだけどな〜」と思い調べてみたところ、git add
には対話モードなる機能があることを知りました。お恥ずかしながら、実ははじめて知りました。使い方をまとめておきます。
ターミナル上で下記のように入力します。
# ショートハンド
git add -i
# すべて記述
git add --interactive
すると、対話モードが開始されます。対話モードでは、git status
と似た「どのファイルがステージに追加されているか・されていないか」といった情報と、この対話モードで実行できるコマンドの一覧が表示されています。
❯ git add -i
staged unstaged path
1: unchanged +4/-0 Cargo.lock
2: +1/-0 nothing Cargo.toml
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now>
status は git status
とほぼ同等の目的を達成できますが、ステージした変更が左側、ステージしていない変更が右側に表示されます。直感的ですね。
update は、実行後ファイルを選択してステージに追加できます。git add
をそのまま起動すると、個別のファイルを指定する際にはフルパスをコピー&ペーストする必要があるかと思いますが、update コマンドを利用すると番号の指定のみで済ませられ簡単です。
revert はファイルのステージを取り消します。git reset
する際と同等の動きをします。全部を reset したいわけではない際に有効そうです。revert というとコミットの revert を思い浮かべてしまうのですが、そうではなく add という行為の revert (巻き戻し)のことのようです。
add untracked はまだ git でトラックされていないパスをステージに追加できます。新規ディレクトリやファイルを作成し、git add
を実行すると untracked files
というリストを見られるはずです。それをステージすることができます。
patch はファイルの一部をステージすることができる機能です。add コマンドには実は git add -p
というパッチモードが存在するのですが、これを呼び出します。普通に add コマンドを実行しただけでは「ファイル単位での add」しか管理できませんが、p オプションはブロック単位(ハンクと呼ばれます)をサポートしています。
diff は git diff
と同等です。これからコミットされる予定のものを確認するためのコマンドです。
対話モードのコマンドの使い方には流れがあります。次の通りです: