Open12

俺の育てたshellを見てくれ……お前のshellはどうだ?教えてくれ[みすてむずアドカレ3 16日目]

FruitRiinFruitRiin

私はfish派 お前は何sh?

この記事は みすてむず いず みすきーしすてむず (3) Advent Calendar 2023 16日目の記事です。
https://adventar.org/calendars/8615

カスタマイズもそうなんだけど、どういうふうに shell 使ってるか気になるから私の使い方から書いていこうかな

FruitRiinFruitRiin

意味ありげなものはこれくらい
そんなにはゴリゴリカスタマイズしているわけではない

if status is-interactive
    
    function fish_user_key_bindings
      bind \cr fzf_history  
    end
end

source /opt/homebrew/opt/asdf/libexec/asdf.fish


alias wsf fzf_ws
alias g git
alias git-delete-branch 'git branch | fzf --preview "git log --pretty=one  {}" | xargs git branch -D'
alias dc docker-compose
alias git-change-branch git\ branch\ \|\ sed\ -e\ \"s/^.\\\"\*\ //g\"\ \|\ fzf\ --preview\ \"git\ log\ --pretty=\'\%h\ -\ \%s\'\ \ \{\}\"\ \|\ xargs\ git\ switch
alias d docker
alias brew-intel 'arch -x86_64 brew'
alias cdf fzf_cd
alias git-pullpullrequest gh\ pr\ list\ \|\ fzf\ \|\ awk\ \'\{print\ \$1\}\'\ \|\ xargs\ gh\ pr\ checkout
alias git-reset git\ log\ --pretty=\"\%h\ -\ \%s\"\ \|\ fzf\ \|\ awk\ \'\{print\ \$1\}\'\ \|\ xargs\ git\ reset
alias intel-brew 'arch -x86_64 brew'
alias ws webstorm
alias ghqf fzf_ghq
set -gx VOLTA_HOME "$HOME/.volta"
set -gx PATH "$VOLTA_HOME/bin" $PATH
FruitRiinFruitRiin

ws でwebstormが立ち上がるのは結構体験がよい。

ws /path/to/project  # 指定のディレクトリで開く


cd /path/to/project
ws . # カレントディレクトリをWebstormで開く

私の場合は Webstormだけど、 VSCodeなら code を使うことができる。
https://qiita.com/TK-C/items/58a6e825fb49d70f9d7c

これ。

FruitRiinFruitRiin

M1 Macでこれをよく使う

alias intel-brew 'arch -x86_64 brew'
alias brew-intel 'arch -x86_64 brew'

intel-brew install gcc とか。 Arm版 brew でinstallできなかったら intel-brew を変わりに使う感じ。

FruitRiinFruitRiin

エスケープのせいでえらいことになってるけど、 fzf を使ってインタラクティブにgitを操作しようというあれこれ

alias git-pullpullrequest gh\ pr\ list\ \|\ fzf\ \|\ awk\ \'\{print\ \$1\}\'\ \|\ xargs\ gh\ pr\ checkout

PullRequestを表示してそこへswitchできる
これはめちゃくちゃ便利。おすすめ。

alias git-change-branch git\ branch\ \|\ sed\ -e\ \"s/^.\\\"\*\ //g\"\ \|\ fzf\ --preview\ \"git\ log\ --pretty=\'\%h\ -\ \%s\'\ \ \{\}\"\ \|\ xargs\ git\ switch

どんなブランチがあるのか見ながらswitchできる
git switch なんか適当にいれてTabで結構補完できることがわかってからはあんまり使わなくなったんだけど、コミットログのプレビューとかあるのでかなり便利

alias git-delete-branch 'git branch | fzf --preview "git log --pretty=one  {}" | xargs git branch -D'
alias git-reset git\ log\ --pretty=\"\%h\ -\ \%s\"\ \|\ fzf\ \|\ awk\ \'\{print\ \$1\}\'\ \|\ xargs\ git\ reset

作ったけど使ってない

FruitRiinFruitRiin

ここから先は shell のカスタマイズの話じゃなくて運用の話

FruitRiinFruitRiin

なんかよくわからん差分がたくさんあるのを戻したいとき

git reset HEAD --hard # 最後のコミットに戻る
git reset develop --hard # ローカルのdevelopに戻る
git reset origin/develop --hard # リモートのdevelopに戻る

Untracked なファイルも消したいとき

git clean -fd

特定のファイルだけ develop から取り出したいとき

git checkout develop -- package.json # package.json だけをdevelopのものに戻す

今のブランチに切り替える前のブランチに戻りたいとき

git switch - # 最後にいたブランチに戻る

git add . のかわりに git commit に含められたら便利

git commit -a -m "message" # -a が git add . も一緒にやってくれるオプション

npm run dev とかしたけどポートが被ってる? なんか死にぞこないがいるんじゃないか?

killall node # node で動いてるプロセスが全部死ぬ *サーバー環境でやると死ぬわよ

いやいや、まずは何が動いてるか確認だよ

lsof -i:3000 # port 3000 で動いてるプロセスを教えてくれる。 lsof -i 3000 ではなく lsof -i:3000 でないといけない

プロセスIDがわかったら kill すればよい。

コミットログを一行でざっと表示したいなあ

git log --oneline

なんかディレクトリを finder とかで開きたい

open /path/to/dir

squash merge したブランチはいらないんじゃないか
https://www.npmjs.com/package/@teppeis/git-delete-squashed

git-delete-squashed

それぐらいかな。