GitHubでdotfilesを管理して、どこでも簡単に環境を統一しよう!【アドカレ2020 最終日】

プログラミング アドカレ2020

こんにちは。 最近Oculus Quest 2を買ってVRChatにハマったcordx56です。

ノリで書きますと言ってしまったのですが、もう卒業を目前にした自分がアドカレ最終日を書いてしまって良いものかと不安になっています。 許してくださいね、後輩各位……

今回は設定ファイル群を簡単に管理して、複数端末で同期して利用する方法について解説していきます。

なお、本記事はzsh & Powerlevel10kでシェルをパワーアップしよう!で環境をセットアップした方を対象に書いていきますので、こちらも是非ご参照ください。

dotfilesとは

さて、タイトルにもなっているdotfilesとは一体何なんでしょうか。

Googleでdotfilesで検索すると様々な記事がヒットします。 詳しくはそれらの記事を読んでいただくのがいいかとは思うのですが、ここでもざっくりと説明すると、エンジニアにはファイル名がdot(.)から始まる設定ファイル群を管理するリポジトリをdotfilesと名付ける慣習があります。

Linuxなどではファイル名がdot(.)から始まるファイルは隠しファイルとして扱われます。 そして通常、各種設定ファイルはホームディレクトリ(通常、シェルを立ち上げたときに一番最初にいるディレクトリのことです)に隠しファイルとして配置されます。 これを管理するリポジトリがdotfilesというわけですね。

dotfilesリポジトリを作ろう!

まずここにアクセスして、dotfilesという名前のリポジトリを作成します。 Ownerを自分に、Repository nameをdotfilesにします。 Public / Privateはお好みで設定しましょう。 他のチェックはつけずに、Create repositoryボタンを押します。

おめでとうございます!これでdotfilesリポジトリの出来上がりです。

え?中身が何もない?

ではこれから中身を置いていきましょう。 ここからは既に.zshrcなどがホームディレクトリにある前提で話を進めます。 もし設定ファイルがまだない、設定って何?という方は、zsh & Powerlevel10kでシェルをパワーアップしよう!を参考に設定を行ってください。

dotfilesリポジトリに設定ファイルを追加しよう

ここからはリポジトリに設定ファイルを配置していきます。 まずはホームディレクトリに移動してください。

$ cd

そうしたら、ホームディレクトリをGitの管理下におきます。

$ git init

リモートリポジトリをホームディレクトリのリポジトリに紐づけましょう。 USER-NAMEはご自身のGitHubアカウント名で置き換えてください。

$ git remote add origin https://github.com/USER-NAME/dotfiles

まずは.gitignoreファイルを書いていきます。

エディタで~/.gitignoreを開いて、次の内容を書いてください。

*
!.gitignore
!.zshrc
!.p10k.zsh

保存して、シェルで次のコマンドを実行します。

$ git add -A
$ git status

ここで次のような出力が出ればうまくいっています。

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   .gitignore
        new file:   .p10k.zsh
        new file:   .zshrc

コミットしてしまいましょう!

$ git commit -m "first commit"

これで設定ファイルをGitで管理することができました。 では、これをGitHubにpushしましょう。

$ git push origin master

ログイン情報を求められると思うので、入力します。 正常にpushできたら、GitHubのウェブページでdotfilesリポジトリを覗いてみましょう! .gitignore、.zshrc、.p10k.zshの3つのファイルが登録されているはずです。

他の端末からdotfilesを利用する

ここまででGitHubで設定ファイルを管理できるようになりました。

では、他の端末から設定ファイルを利用するにはどうすれば良いでしょうか。

答えは簡単で、GitHubから設定ファイルを持ってくれば良いのです。 他の端末で次のコマンドを実行してください。 USER-NAMEはご自身のGitHubアカウント名で置き換えてください。

$ cd
$ git init
$ git remote add origin https://github.com/USER-NAME/dotfiles
$ git pull origin master

これでシェルを閉じて再度開くと、設定が読み込まれて表示されるはずです。

これで新しい端末をセットアップする際も簡単に設定を行うことができます。

他の設定ファイルを追加する

折角なので他の設定ファイルも追加してみましょう。 ここでは例としてEmacsとVimの設定ファイルを追加します。

.gitignoreに次の内容を追記してください。

!.vimrc
!init.el

次のコマンドを実行してください。

$ git add -A
$ git status

EmacsやVimの設定ファイルが既に存在している方は、これでファイルが追加されたのではないでしょうか。

commitしてpushしましょう。

$ git commit -m "add vim and emacs config file"
$ git push origin master

GitHubのdotfilesのページを開くと、新しいファイルが追加されているはずです。

設定をいじるの面倒くさい!なんかいい設定例ないの?

私のdotfilesがあるので、もし良ければこちらをフォークして使うのはありです。 GitHubでは右上のforkボタンを押すことで、他人のリポジトリを自分のところにコピーできます。 自分のところにフォークしてきたら、次のコマンドを実行して手元の環境に持ってきて使います。 USER-NAMEはご自身のGitHubアカウント名で置き換えてください。

$ cd
$ git init
$ git remote add origin https://github.com/USER-NAME/dotfiles
$ git pull origin master

最後に

本記事をここまでお読みいただきありがとうございました。 皆様の快適な開発環境構築の一助となれれば幸いです。

また、デジクリ Advent Calender 2020に最後までお付き合いいただいた読者の皆様、ありがとうございました。 そしてデジクリ Advent Calender 2020を企画し、ブログページの開発を行ってくれた後輩各位、本当にありがとうございました。

また来年も、どうぞよろしくお願いいたします。