LoginSignup
8
1

More than 5 years have passed since last update.

最近知った便利なGitのコマンド・オプションたち

Last updated at Posted at 2018-12-12

最近知った便利なGitコマンド・オプションを使い所と併せて紹介します。

ファイル内の特定の編集だけステージしたい

$ git add --patch

addコマンドに--patch(もしくは-p)オプションをつけると修正した塊(ハンク)ごとにステージするかどうかを選択できます

$ git add --patch

diff --git a/nvim/dein.toml b/nvim/dein.toml
index 964ebe1..69af6f8 100644
--- a/nvim/dein.toml
+++ b/nvim/dein.toml
@@ -621,9 +621,6 @@ 

+[[plugins]]
+repo = 'Shougo/dein.vim'

Stage this hunk [y,n,q,a,d,e,?]?

基本的にはy(es), n(o)でステージするハンクを選んでいくだけです(?を実行すれば各コマンドの内容が表示されます)

自分の想定していない修正が入っていないかステージする前に必ず確認したいのでaddコマンドは必ずこのオプションとともに実行するようにしています

ちょっとした修正を前のコミットに含めてしまいたい

$ git commit --amend --no-edit

ちょっとした修正をgit addしたあとに↑のコマンドを実行することで前のコミットに修正を取り入れることができます
直前のコミットをリモートにpushしてしまった場合は使えません
また, コミットメッセージも修正したい場合は--no-editコマンドなしで実行したらできます

新規作成したファイルが間違ってignoreされてないか確認する

$ git status --ignored | grep searching_file

新しく作成したファイルがなぜかignoreされていてコミットに含めるのを忘れてしまうことってあると思います(ないですかね)
git status--ignoredオプションをつけるとignoreされているファイルも合わせて表示してくれるので簡単に確認できます
そのまま実行するとignoreされているファイルが多いときは探すのがめんどくさいのでgrepしてもよいです

作業ディレクトリから不要なファイルを削除したい

$ git clean --interactive

一時的に何かしらのテスト用ファイルを作ったりすること、あると思います。その後必要なくなったので削除したい, そんなときはgit cleanを実行することで綺麗な状態にできます。--interactive(もしくは-i)オプションをつけることで以下のように対話形式で削除するファイルを選択できるので誤って必要なファイルを削除することを防げます。


$ git clean --interactive
Would remove the following items:
  .DS_Store test.py
*** Commands ***
    1: clean  2: filter by pattern  3: select by numbers  4: ask each  5: quit  6: help
What now>

なおgit cleanするとファイルが完全に削除されるので一応ファイルの変更を残しておきたいときはgit stash --allします

割り込み作業が入って別ブランチを切らないといけない

$ git worktree add -b hotfix/fatal-bug hotfix

何かしらの作業中に別の作業をする必要が出たときgit stashしてgit checkout -b hotfix/fatal-bugのようにするのはちょっとめんどくさいですね
同じワーキングツリーでbranchを切り分けるのではなくワーキングツリー自体を新しく追加することで簡単に作業branchを切り替えることができます
git worktree add -b ブランチ名 パス名とすることで新しくワーキングツリーが指定したパスに追加されます
↑の例だとhotfixディレクトリが新規に作成されるのでcd hotfixして実際に作業を行なうことができます
作業が終わりpushまでしてしまったらルートディレクトリに戻ってrm -rf hotfixで作成されたhotfixディレクトリを削除してgit worktree removeもしくはgit worktree pruneするだけです

まとめ

↑で紹介したコマンドを利用することで雑なコミットをしてしまったり作業ディレクトリが汚れるのをある程度防げるような気がします
あとはbranchの切り方にも気をつけて綺麗なバージョン管理をしていきたいです:muscle:

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1