275
303

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Git 初期設定

Last updated at Posted at 2018-05-20

目的

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

メールアドレスのプライバシー設定

プライベートなメールアドレスが表示されるのが嫌な場合は
Keep my email address private にチェックを入れて、
ID+ユーザー名@users.noreply.github.comuser.email に設定しましょう。

global .gitignore 設定(推奨)

~/.config/git/ignore

$ mkdir -p ~/.config/git

ディレクトリがない場合作成する。

.DS_Store

[Git] .gitignoreの仕様詳解

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ツール

詳細は Git使うのに便利なCLIツール の記事に詳しくまとめられています!

次回

GitHub SSH接続設定も合わせて行いましょう!

参考

275
303
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
275
303

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?