構成¶
本節ではコマンド git config 等による構成に関する事項について記す。構成項目がひじょうに多いが、私にとって有用なものを優先して掲載していく。
概要¶
Git の個人的構成オプションは既定でファイル $HOME/.gitconfig に保存される。テキストエディターで直接テキストを編集してもよいし、コンソールから git config
--global で設定を書き込んでもよい。
各コマンドが任意に構成項目を参照するという設計上、すべてのオプションを一覧にまとめたようなものは存在しない。ここでは設定不可欠な項目とプロによる推奨項目を記すことにする。
設定ファイル¶
環境変数 XDG_CONFIG_HOME を XDG Base Directory 利用ノート で記したように定義した上で、既定パスの設定ファイル各種を再配置することを推奨する:
$ mv ~/.gitconfig $XDG_CONFIG_HOME/git/gitconfig
このように整理しておくことで、他のアプリケーションのドットファイルと一括して
$XDG_CONFIG_HOME ごと Git でバージョン管理することが可能になる。
.gitignore などの他の Git 設定ファイルについても同様に扱うのが自然だ。
Caution
設定ファイルの一部が機密情報であるはずなので、そういうものは 後述 のように別ファイルに追い出して、公開リポジトリーに出さない運用にしろ。
設定内容¶
以下、設定ファイルでの記法で個人的に有用な設定項目をセクションごとに列挙していく。
セクション alias¶
エイリアス に記す。
セクション branch¶
branch.autoSetupRebase = alwaysgit branch,git switch,git checkoutで新しくブランチができるときに、merge``ではなく ``rebaseでpullさせる。
セクション browser¶
他の構成項目を設定する過程で付随的に browser.<tool>.cmd や
browser.<tool>.path を設定する必要が生じたとする。
Cygwin の場合はサブセクションを "default-browser" とし、cmd = cygstart
とすれば Windows の既定のブラウザーを開かせるようにできる。なおかつ固有名詞をハードコードすることを避けられる。
[browser "default-browser"]
cmd = cygstart
同様に、WSL の場合には cmd = wslview とする。
[browser "default-browser"]
cmd = wslview
セクション color¶
コンソールにおける文字色のオンオフや、色自体を設定するための構成オプションが多数存在し、サブセクションでそれらを指定する。
color.branch.<slot>ブランチの色をカスタマイズする場合は次のように設定する:
[color "branch"] current = yellow reverse local = yellow remote = green
color.diff.<slot>差分テキストの色をカスタマイズする場合は次のように設定する:
[color "diff"] meta = yellow bold frag = magenta bold old = red bold new = green bold
color.statusgit statusの出力する各種テキストの色を次のようにして設定することができる:[color "status"] added = yellow changed = green untracked = cyan
color.ui = autogit diffやgit grepなど、オプション--colorを実装しているコマンドのデフォルトの色使い設定を指示する。値としてはautoで十分だと思われる。
セクション core¶
core.autocrlf = inputテキストファイルをコミットするときに、改行文字の変換をどうするのかを指示する。
値を
inputにセットして変換を行わせない。core.excludesFile = ~/.gitignore作業コピー内の
.gitignoreと.git/info/excludeの記述に加えて、ここで設定したファイルもバージョン管理の対象外ファイルの一覧とする。この値を設定するよりも、既定値である
$XDG_CONFIG_HOME/git/ignoreや$HOME/.config/git/ignoreに一覧を移行したほうがいいかもしれない。core.editorログメッセージを編集するためのコマンドを設定する。
普通は汎用テキストエディターのパスをセットするのだが、この構成オプションを設ける代わりに、環境変数
GIT_EDITORでそれをセットすることにした。core.fileMode = trueCygwin から WSL に作業環境を移行する際にこの設定を
trueに変えた。
セクション diff¶
diff.tool = vscodeコマンド
git difftoolを実行するときに使われる差分ツールを設定する。詳細はサブセクション、この場合はdifftool "vscode"に記す。次節の記述を参照。右辺でセットする値は Git が規定する名前か、任意の名前を設定できる。ここでは任意の名前としてvscodeと書いた。
セクション difftool¶
difftool.<tool>.cmd や difftool.<tool>.path を次のように設定する。ここでシェル変数 LOCAL と REMOTE にはそれぞれ差分の pre-image とpost-image となる一時ファイルがそれぞれ動的にセットされる。
ツールの特性に合わせて敢えてこれらのパラメーターを入れ替えて指定することもあり得る。
[difftool vscode]
cmd = code --wait --diff $LOCAL $REMOTE
difftool.prompt = falseツールの起動時にプロンプトを出すかどうかを設定する。要らないので
falseとする。
セクション help¶
help.browser = default-browserヘルプをウェブブラウザーで見るときのブラウザーを設定する。併せて
browser.<tool>.cmdなりbrowser.<tool>.pathを設定すること。help.format = webコンソールでヘルプを見るのはつらいので、HTML 版をブラウザーで見るための設定。逆に
manのほうが慣れているならば、この項目を設定しない。
セクション merge¶
merge.ff = falseコマンド
git merge実行時に--no-ffが付く。merge.tool = vscodegit mergetoolを実行するときに使われるマージツールを設定する。他の構成オプションの例と同様に
merge.<tool>.cmdなりmerge.<tool>.pathを設定すること。次の節も参照。merge.log値
trueを設定したい。
セクション mergetool¶
mergetool.<tool>.cmd や mergetool.<tool>.path を次のように設定する。ここで BASE や REMOTE などのシェル変数を、マージ処理に関連する一時ファイル名として指示するのに用いる。
[mergetool "vscode"]
cmd = code --wait $MERGED
keepBackup = falseマージ処理後に、衝突マーカーの付いたファイルを残すかどうかを設定する。要らないので
falseとする。prompt = falseツールの起動時にプロンプトを出すかどうかを設定する。要らないので
falseとする。
セクション pull¶
pull.ff = onlyコマンド
git pull実行時に--ff-onlyが付く。
セクション push¶
push.default = currentgit pushのように refspec を指定しないでプッシュするときに、実際に何をプッシュするのかを設定する。値をcurrentとすれば、現在ブランチをリモートの同名ブランチにプッシュするようになる。
セクション user¶
GitHub にリポジトリーを設置するのであれば要設定。ただし、このセクションは
$HOME/.gitconfig に直接記入するのではなく、別のファイルに記載して
include する運用を取ること。
# in ~/.gitconfig:
[include]
path = /path/to/gitconfig-user
# in /path/to/gitconfig-user:
[user]
name = xxxx
email = xxxx
user.name私の名前をテキストで設定する。
user.email私のメールアドレスを設定する。
user.signingKeyキーを設定する。設定値が
git tagやgit commitでキーが必要な状況において、引数にキーを指示しないでコマンドを実行するときに参照される。
セクション web¶
web.browser = default-browserウェブブラウザーを利用するコマンドに対して、どのブラウザーを使わせるのかを設定する。これを設定する場合、セクション
browserのサブセクションbrowser "default-browser"を設けて、そこでbrowser.<tool>.cmdなりbrowser.<tool>.pathを設定することになる。[web] browser = default-browser [browser "default-browser"] cmd = wslview