- はじめに
- 使用ツール
- ブランチをdevelopから切って開発スタートの場合
- 開発中のブランチをdevelopの最新にrebase/mergeする場合
- コミットしたけどaddし忘れがあったので、直前のコミットに追加する場合
- コミットしたけどaddし忘れがあったので、いくつか前のコミットに追加する場合
はじめに
自分は基本的に「tig + ターミナル」でgit操作を行っています。
- いちいち画面を開かなくていい
- どこでも開発できるようになる
- コマンドをやり直したい場合に「↑」で履歴を追える
という利点があって、なかなかオススメです。
あとついでにケースごとに「どうコマンドを打つのか」をまとめました。
使用ツール
- コンソール
- tig
ブランチをdevelopから切って開発スタートの場合
コマンド
git co develop
git pull
git co -b feature/xxx
tig
→s
→u
(ステージング)git commit -m "xxx"
解説
develop ブランチを最新にし、そこから feature/xxx
を生やして移動、最後に tig でステージングしコミットをしています。
git co -b
とすることで作成と移動を一緒に行えます。(ドキュメント)
また、tig を使うことで、変更をhunkでstagingすることができます。
最後に git commit -m
とコメント付きでコミットを行います。
これの利点は、コミットをやり直したいときなどに、コンソールの履歴から実行できるという点です。
開発中のブランチをdevelopの最新にrebase/mergeする場合
コマンド
git co develop
git pull
git co feature/xxx
git rebase develop
/git merge develop
解説
develop ブランチを最新にし、それにrebase、もしくはdevelopをマージです。
自分はコミットログは綺麗にしたいとは思ってるけど、rebase に 30min かかるのなら、mergeしてしまえばいいと思ってます。
コミットしたけどaddし忘れがあったので、直前のコミットに追加する場合
コマンド
tig
→s
→u
(ステージング)git commit --amend
解説
--amend
というオプションをつけることで、直前のコミットに変更を追加することが出来ます。
場合によっては git reset HEAD^
と叩いて、直前のコミットを戻すこともあります。
コミットしたけどaddし忘れがあったので、いくつか前のコミットに追加する場合
コマンド
tig
→s
→u
(ステージング)git fixup
git rebase as 4
解説
まず変更対象をステージングして、 git fixup
で “fixup! xxx” みたいなコミットを生成します。
そのあと git rebase -i --autosquash HEAD~4
のエイリアスを叩いてます。
git fixup
はこちらを使わせていただいてます。非常に素晴らしいスクリプトです。
https://qiita.com/uasi/items/57da2e4268d348b371fb
エイリアスの設定ははこんな感じです。
[alias]
co = checkout
as = "!f(){ git rebase -i --autosquash HEAD~$1;};f"
こちらのやり方を参考にさせてもらいました。
https://qiita.com/yatemmma/items/22aa62e232776f4f330b