僕の使っているコマンドラインツールの #ひかえめなアドベントカレンダー2023 12月20日分はgitです。コードやテキストの変更を管理します。
この余白はgitそのものの利用手順を書くには狭すぎるので置いておくとして、ワーキングコピーでシェルのプロンプトにワーキングコピーの状態を知らせてもらえると、未コミットの変更や未pushのコミットがあると*や>が見えて不安にさせてもらえるのがすごく便利です。
Xubuntuではbashを使っていて、~/.bashrcに下記のような行を追加してあります。
case "$TERM" in
xterm*|rxvt*)
if type __git_ps1 >/dev/null 2>&1; then
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUPSTREAM="auto"
PS1="${PS1/\\$ /}\$(__git_ps1)\$ "
fi
PS1=${PS1/\$ /\\n$ }
;;
*)
;;
esac
macOSではzshを使っていて、~/.zshrcに下記のような行を追加してあります。.git-sh-promptファイルはUbuntuの/usr/lib/git-core/git-sh-promptをコピーしてきたものです。https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh と同様の内容です。
source ~/.git-sh-prompt
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUPSTREAM="auto"
NEWLINE=$'\n'
setopt PROMPT_SUBST
PS1='%F{green}%n@%m%f:%F{cyan}%~%f $(__git_ps1)${NEWLINE}$ '
例えばMastodonのワーキングコピーに居ると下記のようなプロンプトになります。=ならローカルに変更はなくoriginと同期されていてあんしん。
zunda@misoan:~/c/src/github.com/zunda/mastodon (use-ruby33-react-router-5=)
$
git/contrib/completion/git-prompt.sh at master · git/git