こんにちは、みえないプログラマです。
今日は知っているとちょっと便利なGitのコマンドをいくつか紹介したいと思います。 (自分の備忘録も兼ねています…)
git clean -fdx
ワーキングディレクトリにあるGitに追加されてないファイル、ディレクトリを消去します。
git clean -f -d -x
の組み合わせで、それぞれ、
- git clean -fでGitに追加されてないファイルを削除
- git clean -dでGitに追加されてないディレクトリを削除
- git clean -xでgitignoreなどで指定されているファイルもまとめて削除
の意味です。
-nをつけるとdry-runになります。
git reflog
誰もがおそらく一度はやらかすgit reset —hardの暴発。 —hardで戻しすぎたり、間違えてブランチを消しちゃったりしてせっかくの 作業が水の泡…ってときに使います。 他にも、ブランチを間違えて削除したときにも使えます。
これを使うとgitの過去のあらゆるコミット履歴を確認できるので、 (ただし、git gcでガベージコレクトされているとダメ) git reflogでコミット履歴を確認して戻したいところを見つけたら、git reset —hard HEAD@{2} といった感じで戻します。
ブランチを復活させるときは、git branch <ブランチ名> HEAD@{2}とします。
git worktree
複数のブランチで同時に作業をしたい、ということがたまにあります。 こういう時に、今作業してるブランチと別のブランチを他のディレクトリにチェックアウ トして同時に作業できます。
git worktree add <作業ディレクトリ> <ブランチ名>
とすると、<作業ディレクトリ>に指定したブランチの中身がチェックアウトされ、元の作 業ディレクトリとは別に作業することができます。
注意点として、gitの管理は元の作業ディレクトリで変わらず行われているため、削除して はいけない点です。
また、git worktree list で作成したworktreeのリストが確認できます。 その他詳しいことは https://git-scm.com/docs/git-worktree を参照してください。
git commit --amend
直前のコミットメッセージをtypoしたり、コミットに入れ忘れたファイルがあった際に修正できます。
このコマンドを実行するとエディタが起動するので、好きに修正して保存します。 ただし、すでにpushしてしまったコミットを修正してはいけません。
git switch <ブランチ名>
git checkout -b で行っていたブランチ切り替えと同じです。
git checkoutを引数の順番など何故か忘れる人多いんじゃないでしょうか。(自分がそ うです)
git checkoutの機能が多すぎたのもあり、分離するためにGit 2.23より追加されました。