Open2

git

Shuji KoikeShuji Koike

git

git cli を快適に使う

  • brew install git tig
  • git のサブコマンド・オプション・ブランチ名等の補完が効くようにする
  • git alias を設定する
  • git の使い方を知って恐怖心を無くす
  • Sourcetree を uninstall する

直前の commit に差分を追加する

git commit --amend --no-edit --all

直前の commit を(差分を残しつつ)取り消す

git reset --soft HEAD~

過去の commit に差分を追加する

commit ---fixup を使う方法

git commit --fixup xxxxxxx
git rebase --interactive --autosquash origin/HEAD

rebase --interactive を使う方法

git stash
git rebase --interactive origin/HEAD
# 追加する対象のcommitの行をpickからeditに変更
git stash pop
git commit --all
git rebase --continue

過去の commit を並び替える

git rebase --interactive origin/HEAD
# viで行を並び替えることでcommitの並び替えを行うことができる
Shuji KoikeShuji Koike

git を安全に使う

current branch を SHELL のプロンプト($PS1)に出す

状態を見える化してミスを防ぐ

git branch -d main

ミスの元なので local に main branch を作らない。
代わりにorigin/mainorigin/HEADを使う。
fetch するだけで必ず最新になるのも利点。
git merge origin/HEAD
git rebase origin/HEAD

git switch origin/hoge

自分の作業ブランチ以外は local branch を作らない。

git config --global push.default current

デフォルトで current branch を同名の remote branch に push する。
push する時に branch を指定すると逆に危険なので指定しない。

ただし、(すごく)古い git 環境で branch を指定せずに push すると全ての local branch が push されてしまうのでこれも注意。

git push --force-with-lease

https://qiita.com/wMETAw/items/5f47dcc7cf57af8e449f
git push -f をやめて --force-with-lease を使おう

git config --global alias.pf "push --force-with-lease"

GUI アプリとかがバックグラウンドで定期的に fetch してると、ほぼ意味がなくなる。

git config --global fetch.prune true