posh-git と starshipのgit statusの違い

誰得？という気もするけど、、、

### posh-git
[Git status summary information](https://github.com/dahlbyk/posh-git?tab=readme-ov-file#git-status-summary-information)に詳細があります

デフォルトだとこんな風になります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3740499/f556b18b-a6ca-9b03-b205-1b434fbbc809.png)

フォーマットは
```
[{HEAD-name} S +A ~B -C !D | +E ~F -G !H W]
```
||説明|もうちょっと詳しく|
|-|-|-|
|{HEAD-name}|ブランチ名<br>ブランチのステータスを色で分けてる|<font size="1" color="darkcyan">水色(cyan)</font>：リモートと一致<br><font color="green">緑</font>：リモートよりahead（pushするものがある）<br><font color="red">赤</font>：リモートよりbehind（pullするものがある）<br><font color="orange">黄色</font>：aheadとbehindの両方|
|S|ブランチのステータス|≡：リモートとローカルは一致<br>↑<数字>：ローカルが数字分だけahead<br>↓<数字>：ローカルが数字分だけbehind<br><ａ>↕<ｂ>：ローカルがaだけahead、かつbだけbehind<br>x：対応するリモートブランチが見つからない（？？なったことがないのでよくわかりません）|
|A|ステージ済みの追加されたファイル数||
|B|ステージ済みの変更されたファイル数||
|C|ステージ済みの削除されたファイル数||
|D|コンフリクト状態のファイル数|（ステージ済みのコンフリクト状態のファイルというのはあるんでしょうか...）|
|E|ステージ前の追加されたファイル数||
|F|ステージ前の変更されたファイル数||
|G|ステージ前の削除されたファイル数||
|H|コンフリクト状態のファイル数||
|W|作業ディレクトリの状態|!：ステージ前のファイルがある<br>~：コミット前のファイルのファイルがある|

### starship
[git branch](https://starship.rs/config/#git-branch)
[git state](https://starship.rs/config/#git-state)
[git metrics](https://starship.rs/config/#git-metrics)
[git status](https://starship.rs/config/#git-status)

デフォルトだとこんな感じです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3740499/d090c568-2c81-beba-3ed6-879739e4743d.png)

starshipのはかなり複雑なんだけど、
```
on（symbol）{branch} {commit}{tag} {state} {metrics} {[status]}
```
という形になっている。
||説明|もうちょっと詳しく|
|-|-|-|
|(symbol)|枝分かれの記号が入る|Nerd fontの ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3740499/8879c9e1-0137-c1d9-e8c1-6d8736d6f9f5.png)|
|{branch}|ブランチ名が入る|デフォルトでリモートブランチ名は表示されない。HEAD detachedのときは`HEAD`と表示される<br>特定のブランチを非表示にもできる|
|{commit}|コミットのIDが入る|HEAD detachedの時だけ表示される|
|{tag}|タグが表示される|タグは使ったことないのでよくわかりません|
|{state}|ブランチの状態表示|特殊な状態にあるときにREBASEING/MERGING/REVERTING/CHERRY-PICKING/BISECTINGのいずれかを表示。ほかにAM（apply-mailbox)というのもあるが見たことないのでよくわかりません<br><br>進捗状況を数字で表示できる...らしいけどこれもよくわかりません|
|{metrics}|追加・削除された行数|+：追加された行数<br>-：削除された行数<br><br>更新した場合も追加と削除で表示する|
|{status}|ファイルやブランチなどの状態|=：コンフリクトしたファイル<br>↑：リモートよりahead<br>↓：リモートよりbehind<br>⇕：リモートからdiverged（aheadとbehindの両方）<br>?：ステージされてないファイル<br>$：stash<br>»：リネームされたファイル<br>✘：削除されたファイル<br><br>ここにはないがup-to-dateを表示することもできる。デフォルトではそれぞれの数は表示されないが`untracked = '?${count}'`とすることで記号の後に数を表示できる|

### 自分のstarshipプロンプト
posh-gitのように各々の数が表示されているのが好みなので
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3740499/22eb7d98-7d4f-817c-ee4b-2870cc86078d.png)
といった形にしました。参考までに設定ファイルを置いておきます。git_commitのあたりちょっと怪しいけど、あまりdetachedになることもtagを使うこともないのでこのままです。
```toml:starship.toml
# Get editor completions based on the config schema
"$schema" = 'https://starship.rs/config-schema.json'

# Inserts a blank line between shell prompts
add_newline = true
right_format = '$cmd_duration$status'

[time]
disabled = false
format = '[\[⌚$time\]]($style)'
time_format = '%H:%M:%S%.3f'
style = 'bold purple'

[git_branch]
format = 'on [$symbol$branch(:$remote_branch)]($style) '
only_attached = true

[git_commit]
format = '([(💀$hash)($tag)]($style) )'
only_detached = true
tag_disabled = false

[git_metrics]
format = '[+$added]($added_style)/[-$deleted]($deleted_style) '
disabled = false
only_nonzero_diffs = false

[git_status]
format = '[(\[$staged$conflicted$stashed$deleted$renamed$modified$typechanged$untracked\])($ahead_behind)]($style) '
untracked = '+${count}'
modified = '~${count}'
deleted = '-${count}'
conflicted = '!${count}'
staged = '[✓${count}](green)|'
up_to_date = '✅'

[cmd_duration]
format = """
[](yellow)\
[took $duration ]($style)\
"""
min_time = 300
show_notification = true
style = 'italic bold bg:yellow fg:#223344'

[status]
disabled = false
format = '[ $symbol$status ]($style)'
symbol = '✘'
style = 'italic bold bg:red fg:#223344'
```