Gitエイリアスの設定を晒す

この記事は[上智大学エレラボ Advent Calendar 2022 第19日目](https://adventar.org/calendars/7664)の記事です。

## はじめに

上智大学を卒業してから早いもので2年が経過しました。今年もアドベントカレンダーに寄稿をしたいと連絡したところ部長からご快諾をいただきましたので執筆させていただきます。

今回の記事は小ネタでGitエイリアスに設定している内容についてです。もともとは手打ちや `Visual Studio Code` の `Source Control` で頑張っていたのですが、ある日エイリアスを設定できることを知って登録してみたところ、思った以上に便利で今ではいくつか設定しています。その中から2種類のエイリアスを紹介いたします。

## `copy-current-branch-name`

```bash
git config --global alias.copy-current-branch-name '!git branch --show-current | tr -d "\n" | pbcopy && pbpaste'
```

今チェックアウトしているブランチの名前をクリップボードにコピーするエイリアスです。

こだわったポイントとしては、最後の改行文字を消しているところと `pbcopy && pbpaste` しているところの2つです。
改行文字を消すことで、コピーしたブランチ名を他のアプリケーションへ貼り付ける際に意図しない改行の発生を防げます。
また、最後に `pbpaste` でコピーした内容を表示することでクリップボードに入った内容を把握できます。

実行例

```bash
$ git copy-current-branch-name        
main%
```

※ 筆者の環境が `zsh` なので、末尾改行がない出力に対して `%` が付加されています

余談ですが、 `~/.zshrc` のエイリアス設定で、 `alias pbcotee="pbcopy && pbpaste"` を入れておくといろんな場所で使えて便利です。コマンド名は [teeコマンド](https://atmarkit.itmedia.co.jp/ait/articles/1611/16/news022.html) に由来しています。

## `approve-pr`, `approve-pr-with-cat`

```bash
git config --global alias.approve-pr '!bash -c '\''echo "$1" | gh pr review --approve --body-file -'\'' -'
```

`gh` コマンドを使って今チェックアウトしているPRを承認するエイリアスです。　`gh`　コマンドのセットアップ方法などは[公式サイト](https://cli.github.com/) をご覧ください。

実行例

```bash
git approve-pr "LGTM\!\!"
✓ Approved pull request #1
```

当然のことながらコメントはMarkdown形式なので、好きな画像を差し込むことができます。

[LGTMeow](https://lgtmeow.com/) というサービスに掲載されている猫ちゃんの画像のリンクをテキストファイルに保存しておきます。

```~/.config/git/lgtmeow.txt
https://lgtm-images.lgtmeow.com/2021/03/16/01/e62cf588-057c-43a1-82a0-035d7c0e67bf.webp
https://lgtm-images.lgtmeow.com/2021/03/16/23/ac9c977c-5794-4c51-b719-f715d9db2eaf.webp
https://lgtm-images.lgtmeow.com/2021/11/16/22/82f46511-f5c8-4488-a090-871e9b7b1a65.webp
https://lgtm-images.lgtmeow.com/2022/04/11/00/01c919db-0ad8-42a8-bf06-c67a3794254e.webp
https://lgtm-images.lgtmeow.com/2022/04/16/22/88ff1d16-421b-465c-988a-91d911fd801c.webp
https://lgtm-images.lgtmeow.com/2022/04/27/16/9f452c98-7d03-4055-8b19-5822fc9a1452.webp
https://lgtm-images.lgtmeow.com/2022/09/14/12/e4372f80-b057-4ad3-9be0-ad92e3694992.webp
https://lgtm-images.lgtmeow.com/2022/12/10/23/b63b4cc3-7153-4e4e-bb0b-9533fc38cc0c.webp
https://lgtm-images.lgtmeow.com/2022/12/13/16/15f3a3ed-498b-4dbf-8a1d-7b5abc35e58c.webp
```

shufコマンドでランダムに抽出してコメントに追記できます。

```bash
git approve-pr "LGTM\!\!<br> ![LGTM]($(shuf -n1 ~/.config/git/lgtmeow.txt))"
```

fzfなどを使っていればコマンドが長くてもそこまで困らないですが、真ん中のコメントをいじらなければ行けないのは少し不便です。
そこで、 `approve-pr-with-cat` もエイリアスを用意してあげています。

```bash
git config --global alias.approve-pr-with-cat '!bash -c '\''echo "$1<br> [![LGTMeow]("'\''$(shuf -n1 ~/.config/git/lgtmeow.txt)'\''")](https://lgtmeow.com)" | gh pr review --approve --body-file -'\'' -'
```

```bash
git approve-pr-with-cat "良いと思います！！"
✓ Approved pull request #1
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329945/ff5c4bf6-d6e5-e4ae-f407-625ef096ee86.png)

いい感じに動いていますね。ぜひ殺伐としたPRに猫の画像を加えて癒やしを与えてみてください。


# 参考文献

- 2.7 Git Basics - Git Aliases
    - https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases
- Git で今のブランチ名を取得するコマンドの違いを確認してみた
    - https://srz-zumix.blogspot.com/2022/08/git.html