はじめに
こんにちは、nukkyです。
今回はgitを使う上で個人的に便利だと思うコマンドを紹介していきたいと思います。
cherry-pick
cherry-pickコマンドを使うと他ブランチの特定のコミットを取り込むことができます。
使い方
cherry-pick コミットIDでそのコミットを反映させることができます。
1 2 3 4 5 6 7 8 | $ git checkout develop $ git log commit 546de2cc727fcae02646c6af637f401e4238feef いろいろ修正 $ git checkout hoge $ git cherry-pick 546de2cc727fcae02646c6af637f401e4238feef |
stash
stashを使用すると、コミットしていない変更を退避することができます。
stashで変更を退避させて、今すぐやりたい作業をして、退避させていた変更を戻して作業を再開することができます。
使い方
1 | $ git stash save |
コミットしていない変更がある状態で上記のコマンドを実行すると、変更した部分が退避されます。
コミットしていない変更とは、addしたものもaddしていないものもどちらも含まれます。
ブランチは変更が取り消されたきれいな状態となります。
※saveは省略可能
退避した作業の一覧を見る
以下のコマンドで退避した作業の一覧を見ることができます。
1 2 3 4 5 | $ git stash list // こんな感じで出力されます stash@{0}: WIP on test: xxxx stash@{1}: WIP on commit-sample: xxxx |
stash@{X}がstashの名前で、WIP onのあとはブランチ名です。xxxxはstashをしたときのHEADのコミットハッシュとコミットメッセージになります。
退避した作業を戻す
1 2 | // stash@{0}の作業をもとに戻します $ git stash apply stash@{0} |
stash apply stash名にて退避した作業を元に戻すことができます。
このとき、現在チェックアウトしているブランチへ退避した変更が書かれます。
変更を退避したときのブランチにも、それ以外のブランチにも戻すことができます。
また、stash名を指定しない場合は、直近に退避された作業を戻します。
上記のコマンドだと、addしていた変更もaddされていない状態で戻ります(stagedされていた変更もnot stagedととして戻る)。
addした状態そのままにもどしたいときは、上記のコマンドに–indexオプションを付けて実行します。
1 | $ git stash apply stash@{0} --index |
退避した作業を消す
stashを使用して退避した作業を元に戻しても、退避した作業はそのまま残ります。
stash listを行うとそのまま残っているはずです。
退避した作業を消すには、以下のコマンドを使用します。
1 2 | // stash@{0}を削除します $ git stash drop stash@{0} |
退避した作業を元に戻すと同時に、stashのリストから消す
退避した作業を消すにはdropを使用する必要がありましたが、作業をもとに戻すと同時に消すこともできます。
1 2 | // stash@{0}の作業をもとに戻すと同時に、退避作業の中から削除します $ git stash pop stash@{0} |
さいごに
個人的に便利だと思っているGitコマンドを紹介させていただきました。