かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

環境構築 macOS Big Sur : Git の設定と GitHub への SSH 接続

新しいMacに Git の設定やり直したのを書き忘れてたので思い出しながらメモ。

環境

Git のインストール

  1. XcodeXcode Command Line Tools をインストールする
    ターミナルで git --version コマンドを叩くと Command Line Tools をインストールするか聞かれるダイアログが表示されるので Yes を選択すると git が使えるようになる。(楽)
  2. Home brew でインストールする
$ brew install git

Git の設定

global に色々設定する。
設定ファイルは /Users/<user>/.gitconfig に作成される

ユーザー情報
$ git config --global user.name "<NAME>"
$ git config --global user.email "<YOUR E-MAIL>"
デフォルトのエディタをvimにする
$ git config --global core.editor 'vim -c "set fenc=utf-8"'
ファイル名の大文字/小文字を識別する
$ git config --global core.ignorecase false
rebase 時に自動的に --autosquash する
$ git config --global --add rebase.autosquash true

cf. git コミットログを綺麗にしたい。fixupとsquash - かもメモ

git pull の設定

Git v2.27 から git pull のオプションを指定するように Warning が出るようになっているので、fast-forward な時はそのまま marge, fast-forward でない時は マージコミットを作成する今までの挙動 (--ff) をデフォルトに設定する

$ git config --global pull.rebase false

cf. Git 2.27 での git pull 時の warning について - Qiita

カラー設定
$ git config --global color.ui true
$ git config --global color.diff auto
$ git config --global color.status auto
$ git config --global color.branch auto
設定の確認
$ git config --global -l

Git コマンドのエイリアスを作成

git checkout とか毎回タイプするの面倒なのでエイリアスを作成する。
エイリアスgit config <option> alias.<alias name> <command> の形で指定する。コマンドにスペースが含まれる場合は ' で囲って文字列で指定できる。

$ git config --global alias.st status
$ git config --global alias.br branch
$ git config --global alias.co checkout
$ git config --global alias.cm commit
$ git config --global alias.gr grep
$ git config --global alias.cp cherry-pick
$ git config --global alias.l log
$ git config --global alias.l1 'log --oneline'
# ログの tree 表示
$ git config --global alias.tree 'log --graph --oneline'
$ git config --global alias.treeall 'log --graph --all --format="%x09%C(cyan bold)%an%Creset%x09%C(yellow)%h%Creset %C(magenta reverse)%d%Creset %s"'
$ git config --global alias.rb rebase
$ git config --global alias.rb2 'rebase -i HEAD~2'
$ git config --global alias.rb3 'rebase -i HEAD~3'
$ git config --global alias.rb4 'rebase -i HEAD~4'

GitHubssh で接続できるようにする

基本的に公式のドキュメントを見ながら設定すればOK
新しい SSH キーを生成して ssh-agent に追加する - GitHub Docs

SSH 秘密鍵・公開鍵の作成

ed25519秘密鍵と公開鍵を作成する

$ ssh-keygen -t ed25519 -C "your_email@example.com"
Generating public/private ed25519 key pair.
# 秘密鍵・公開鍵の保存場所とファイル名
Enter file in which to save the key (/Users/<user name>/.ssh/id_ed25519):
# パスフレーズの設定 設定しない場合はそのままエンター
Enter passphrase (empty for no passphrase):
# パスフレーズの確認
Enter same passphrase again:

/Users/<user>/.ssh 配下に id_ed25519id_ed25519.pub が作成される

note. ed25519 が使えない場合は RSA で作成する
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

秘密鍵を読み取り専用にする

$ chmod 600 ~/.ssh/id_ed25519

公開鍵を GitHub に登録する

cf. GitHub アカウントへの新しい SSH キーの追加 - GitHub Docs

  1. GitHub のメニューから Settings を選択
    github
  2. 左メニューから SSH and GPG keys を選択し、New SSH Key ボタンをクリック
    github ssh
  3. Title にどのマシンの公開鍵か分かる名前を設定、
    Key にさっき作成した id_ed25519.pub の内容をコピペで貼り付けて Add SSH key をクリック
    GitHub ssh

SSH の設定

SSHの設定ファイルは /Users/<user>/.ssh/config
ファイルがない場合はファイルを作成する

$ touch ~/.ssh/config

パスフレーズをキーチェーンに記憶して使うようにする

パスフレーズを設定している場合、SSH で接続する際に毎回パスフレーズを聞かれるのでキーチェーンにパスフレーズを保存して使うようにする。
~/.ssh/config に下記内容を追記する

Host *
  UseKeychain yes
  AddKeysToAgent yes # ssh-agent を使用する

GitHub への接続設定

~/.ssh/configGitHub への接続設定を追加する

Host github.com
  HostName github.com
  User <GitHub に登録しているメールアドレス>
  Port 22
  IdentityFile "~/.ssh/id_ed25519" # GitHub 用の SSH 秘密鍵

ssh-agent に秘密鍵を登録する

ssh-agent をバックグラウンドで起動

$ eval "$(ssh-agent -s)"
> Agent pid 12345

秘密鍵ssh-agent に追加

ssh-add -K <秘密鍵> で追加できる

$ ssh-add -K ~/.ssh/id_ed25519

ssh-agent に登録された秘密鍵の確認

$ ssh-add -l 
# 登録されている SSH キーのリストが表示される

GitHub への接続の確認

$ ssh -T git@github.com
Hi KiKiKi-KiKi! You've successfully authenticated, but GitHub does not provide shell access.

successfully なメッセージと GitHub のユーザー名が表示されていれば OK
₍ ᐢ. ̫ .ᐢ ₎ 👌 できた

 
ssh-agent の理解が薄くて調べながら書いてたら記事分割していいくらい長くなってしまったケド、まぁまた見直す事があるでしょうからヨシ!
おわり。


[参考]

まちカドまぞく 6巻やっと読めた!危機管理〜