ずっとIDEで行っていた作業を一部コマンドで実行するようにしてみました。
それ用のメモ。
他にもおすすめの使い方があれば教えていただけると嬉しいです。
[2020.11.11 追記]
使うコマンドのレパートリーが増えたので、追加しました。
(基礎)git Bash上での操作
- コピー
- Ctrl + Ins
- ペースト
- Shift + Ins
※コピペしたいところを選択したままShift + Ins
を押すと、一回でコピペできる。
stash
- 一覧を見る
$ git stash list
- 「○○」という名前でスタッシュする
$ git stash save ○○
- 5番目のスタッシュをアンスタッシュする
$ git stash apply 5
- 5番目のスタッシュを削除する
$ git stash drop 5
- 5番目のスタッシュをアンスタッシュしたうえで削除する(めっちゃ便利)
$ git stash pop 5
branch
- 一覧をみる
$ git branch
- 「feature_1111」というブランチを作成する
$ git branch feature_1111
- 「feature_1111」というブランチを削除する
$ git branch -d feature_1111
checkout
- 「feature_1111」というブランチに移動する
$ git checkout feature_1111
- 「feature_1111」という新しいブランチを作成したうえで移動する
$ git checkout -b feature_1111
-b
のオプションを使うことで、新しく作成したブランチにそのまま移動することができます。
このオプションの存在を知るまでは、git branch feature_1111
のあとにgit checkout feature_1111
をしていたので、すごく楽になりました。
fetch
- リモートの更新を読み込む
$ git fetch
すぐレビューしないといけないけど今の変更点スタッシュしてdevelopに移動するのがめんどくさい!というときに便利です。
pull
- リモートの更新を読み込んでローカルに反映させる
$ git pull
fetch
とmerge
をいっぺんにやる。ローカルに変更点があるとエラーになるので事前にスタッシュして回避する。
merge
- 「feature_1111」というブランチの差分を今いるブランチに取り込む
$ git merge --no-ff feature_1111
今やってる案件、絶対feature_1111とコンフリクトするわーみたいなときに使えます。
ただし、MRを出すと、feature_1111で改修した内容も差分として表示されるので、管理者にリモートのマージをしてもらうときは順番が逆にならないように気をつける必要があります。
update-index
- 「index.php」をgitの管理下から外す
$ git update-index --skip-worktree index.php
- gitの管理下から外しているファイルを確認する
$ git ls-files -v | grep ^S
- 「index.php」をgitの管理下に戻す
$ git update-index --no-skip-worktree index.php
ローカルで変更しておきたいけどorigin/developにmargeしたくないような設定系のファイルは、--skip-worktree
でgitの管理下から外しておきます。
ただ、origin/developの該当ファイルが更新されるとpullできなくなるので、--no-skip-worktree
でgit管理下に戻します。