Gitコマンドを快適に使う環境を整える

こんにちは、CX事業本部の岡です。

みなさんGitクライアント何使ってますか?
SouthTree?GitUp?Github Desktop?

GUIクライアントももちろん素晴らしいですが、CUIクライアントの方がなんだかんだ使いやすかったりしますよね。
今日はGitコマンドを快適に使う為の設定方法をご紹介します。

認証設定

プロジェクトによってGitHubを使ったりCodeCommitを使ったりするので credential の設定はlocalで管理するようにします。

GitHub

GitHubにHTTPS経由でアクセスする場合、毎回認証情報を求められるので osxkeychain を使って
認証情報を記憶させます。
brewでgitをインストールしている場合は標準で入っていると思います。

$ git config --local credential.helper osxkeychain

ローカルの設定ファイルの、originの@github.comの前にユーザー名を追加します。

$ git config --local -e
[origin]
https://<user-name>@github.com/<account-name>/<repository-name>.git

account-name はteamリポジトリであればteam名、個人アカウントであればユーザー名です。

一回パスワードを入力すればOKです。

CodeCommit

AWS CLIのプロファイルを以下とします。CLIの設定方法はここでは割愛します。
MFAデバイス設定済でスイッチロールでアクセスする場合のプロファイルになります。

[profile oka_source]
region = ap-northeast-1
mfa_serial = arn:aws:iam::<source-account-id>:mfa/<role-name>
output = json

[profile oka_switch]
region = ap-northeast-1
role_arn = arn:aws:iam::<switch-account-id>:role/<role-name>
source_profile = oka_source
output = json

スイッチ元アカウント: oka_source
スイッチ先アカウント: oka_switch

ローカルの設定ファイルを開きます。

$ git config --local -e

credential セクションに以下を記述します。

[credential]
        helper = "!aws codecommit credential-helper --profile oka_switch $@"
        UseHttpPath = true

oka_sourceのMFAのワンタイムパスワードを求められるので入力します。
ワンタイムパスワードは毎回入力せざるを得ないので、私は1passwordを使ってショートカットでデスクトップアプリを起動してコピペしてます。
1Password CLIを使ってターミナルに表示させる方法もあるので、参考にしてみてください。

エイリアス設定

エイリアス設定に関しては弊部の藤井の記事で紹介されているのでこちらをパクります。

[alias]
        br = branch
        mg = merge --no-ff
        cp = cherry-pick
        lg = log --oneline
        ad = add -u
        cm = commit -m
        sw = switch
        swc = switch -c
        rs = restore
        rss = restore --staged

checkoutの代わりにGitの2.23.0から追加された switchrestore を追加してみました。
設定方法については割愛しますので上記の記事を参照してください。

エイリアス設定(bash)

ついでにbashのエイリアスでgitコマンドをgで打てるようにします。

$ vi ~/.bash_profile

以下を追記
alias g="git"

$ source ~/.bash_profile

こんな風に打てるようになります。

設定前
$ git log --oneline

設定後
$ g lg
246exxx (HEAD -> feature/hoge, origin/feature/hoge) Merge
458cxxx アラートを追加
10d9xxx エラーハンドリングを追加
eae1xxx バリデーション修正