目的
Gitの初期設定を行います。
Gitシリーズ記事まとめ
設定確認
git バージョン確認
$ git --version
git version 2.38.0
まず、MacにインストールされているGitのバージョンを確認しておきましょう。
Windowsと違ってMacはGit標準搭載されているので良きです。
万が一、Gitのバージョンが1系であればアップデートしておいた方が良いでしょう。
git 設定確認
* ローカルの設定
$ git config -l
* グローバルの設定
$ git config --global -l
設定ファイルの場所
- Local:
.git/config
各対象のリポジトリの.gitディレクトリ - Global:
~/.gitconfig
基本はLocalとGlobalの設定ファイルの場所だけ覚えておけばokです。
設定ファイルはコマンドから書き換えることを推奨します。
直接書き換えてしまってもokです。
Git初期設定手順(必須)
git ユーザー名、メールアドレスの設定
ユーザ名、メールアドレスは必ず設定しておきます。
公開リポジトリだとWebから見られてしまうので、本名は設定しない方が無難です。
$ git config --global user.name "ゆうきゃん"
$ git config --global user.email "ucan-lab@example.com"
ディレクトリ、ファイル設定
$ mkdir ~/.ssh
$ touch ~/.ssh/config
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/*
$ xattr -cr ~/.ssh
必要に応じて実行してください。
パーミッションはディレクトリは700
、ファイルは600
である必要があります。
xattr
コマンドでMacの拡張ファイル属性(extended attributes)、いわゆるアットマークが付いてるのを削除できます。
ssh config
$ vi ~/.ssh/config
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
ServerAliveInterval 15
ServerAliveCountMax 30
AddKeysToAgent yes
UseKeychain yes
IdentitiesOnly yes
-
Host *
全ホストの共通設定 -
OpenSSHの警告メッセージを非表示
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
-
SSH接続のタイムアウト設定
ServerAliveInterval 15
ServerAliveCountMax 30
-
入力したパスワード/鍵の省略設定
AddKeysToAgent yes
UseKeychain yes
- 認証の際に、ssh_config ファイルで指定された秘密鍵のみを使用するよう指定
IdentitiesOnly yes
- configを書くことでsshを便利で簡単にしよう!
メールアドレスのプライバシー設定
プライベートなメールアドレスが表示されるのが嫌な場合は
Keep my email address private
にチェックを入れて、
ID+ユーザー名@users.noreply.github.com
を user.email
に設定しましょう。
global .gitignore 設定(推奨)
~/.config/git/ignore
$ mkdir -p ~/.config/git
ディレクトリがない場合作成する。
.DS_Store
Git初期設定(お好み)
ユーザー名とメールアドレスの設定以外はお好みです。
git rebase 対話モード時にも標準モードのようにブランチを更新する
Git v2.38.0 以降のオプションです。
$ git config --global rebase.updateRefs true
git push 時に同じ名前のリモートブランチを作成する
$ git config --global push.default current
デフォルトブランチを main に変更する
※ 2020/10/1 からデフォルトブランチがmasterからmainに変更されました。
The default branch for newly-created repositories is now main
$ git config --global init.defaultBranch main
設定不要かもしれませんが、git init時のデフォルトブランチを指定できます。
git fetch --prune オプションを常に有効化
$ git config --global fetch.prune true
--prune
オプションは削除されたリモートの追跡ブランチをローカルリポジトリに反映します。
git status 追跡されていないファイルはすべて表示
$ git config --global status.showUntrackedFiles all
追跡されていないファイルはすべて表示させたい。
※設定しておかないと新規ディレクトリ配下のファイルが表示されなかったりする。
改行コードの自動変換機能
$ git config --global core.autocrlf input
input
の場合は改行コードをコミット時に LF
に変換してくれます。
(Mac, Linuxは LF
, Windowsは CRLF
がデフォルトの改行コードです。)
この自動変換を無効にしたい場合は false
を設定してください。
git パーミッションの変更を無視する
$ git config --global core.filemode false
チーム開発時は他の人と合わせましょう。
通常はパーミッション情報までコミットする必要はないはずです。
git ファイル名の大文字・小文字の変更を検知する。
$ git config --global core.ignorecase false
ファイル名の大文字・小文字だけを変更することは希にあるので、この設定は割と重要かもです。
以前、大文字・小文字のファイル名修正がコミットされていないことに気付かず、
ローカルではMacやWindowsでは大文字・小文字を区別しないボリュームフォーマットになってることもあり、ローカル環境では正常に動作するが、本番環境のLinux環境ではファイル名とクラス名の大文字・小文字が一致しないことでエラーになってハマったことがあります。
git 日本語ファイル名をエスケープせずに表示
$ git config --global core.quotepath false
git status
した時に日本語ファイル名があっても見やすく表示してくれます。
マージコンフリクトを見やすくする
$ git config --global merge.conflictStyle zdiff3
Git v2.35.0で zdiff3
オプションが追加されました。
設定まとめ
git config --global rebase.updateRefs true
git config --global push.default current
git config --global init.defaultBranch main
git config --global fetch.prune true
git config --global status.showUntrackedFiles all
git config --global core.autocrlf input
git config --global core.filemode false
git config --global core.ignorecase false
git config --global core.quotepath false
git config --global merge.conflictStyle zdiff3
Git CLIツール
- https://github.com/jesseduffield/lazygit
- https://github.com/github/hub
- https://github.com/jonas/tig
- https://github.com/junegunn/fzf
- https://github.com/tpope/vim-fugitive
詳細は Git使うのに便利なCLIツール の記事に詳しくまとめられています!
次回
GitHub SSH接続設定も合わせて行いましょう!
参考
- https://qiita.com/kozo/items/08dc2b86ae3ba3f282c3
- https://qiita.com/ttskch/items/5276f056517d191e19b5
- https://qiita.com/wnoguchi/items/f7358a227dfe2640cce3
- https://yu8mada.com/2018/08/19/after-changing-git-s-merge-conflictstyle-from-merge-to-diff3-merge-conflicts-became-easier-to-resolve
- https://qiita.com/ryuichi1208/items/45fd2cdd865097a7ad3d
- https://qiita.com/m-yamazaki/items/45ea4a71ebb769995043