什麼是 Dotfiles ?

在使用 Mac 的時候在 Home Directory 會有許多以 ‘.’ 開頭的檔案。(大部分都是隱藏起來的)

舉例來說像是 .vimrc, .ideavimrc 等等。

他們就是某些軟體的某些設定檔,就以上面的例子來說,.vimrc 會管理你自己設定的一些 vim 的相關設定。

為什麼要管理 Dotfiles ?

有時候你會重設你的電腦,或是換到其他電腦做使用。

但人是習慣的動物,如果可以有相同的設定檔會讓自己的生活過得開心點。

所以我們可以透過 Git 將 dotfiles 上傳到 github 或是類似的管理網站。

以後只要想要類似的設定檔,只要 clone 下來就可以了。

使用方式

管理 Dotfiles 有許多種方式。

這裡記錄一下目前我被朋友推坑的使用的方式。

  1. 在 Home Directory 下建立一個 .dotfiles folder

  2. 在 .dotfiles 下 init git repo

  3. 在 .dotfiles 下建立 .gitignore then commit

  4. 在 .zshrc 下加入 alias dgit=‘git –git-dir ~/.dotfiles/.git –work-tree=$HOME’

  5. 回到 Home Directory

  6. dgit add -f .profile then dgit commit -m “xxxxx”

  7. 加入其他你想要加入的 dotfiles

  8. push to remote repo

當你需要這些設定檔的時候只要在 Home Directory clone repo

下指令

dgit reset --hard

// 如果沒有 dgit 的話可能要先重複步驟四。
// 特別注意,如果原本 Home Directory 裡有與 remote repo 相同的檔案會被覆蓋。

參考資料

Youtube - .dotfiles in 100 Second

Keep your home dir in Git with a detached working directory

Git Documentation

概念解說

從上面的參考資料 .dotfiles in 100 Second 可以知道,最一開始是希望能夠透過把我們想管理的 dotfile

全部放在 .dotfiles 裡面並使用 git 去管理。

但這裡會有一個比較麻煩的地方就是如果你有許多的 dotfile 你可能會需要做很多次連結 ln -s ……

當然,你可以 google 一下會發現有許多厲害的 .dotfiles repo 裡面都建好 script 來幫你做這件事。

如果你不想努力了(誤),多學 script 。就可以參考另外一種方式。

一般來說我們使用 git 的時候會在當前的資料夾做版控。(就像上方 Youtube 參考連結的做法)

但我們現在的目的是希望在 ~/.dotfiles 裡面建立 git repo 但是是對 Home Directory 的內容去做版控。

使用 git –git-dir {path} –work-tree={path} 這個指令就可以達成這個目的。

然後我們透過 alias 的方式增加我們的效率。不用每次都打這麼長的指令。

結語

如果有任何錯誤或不了解的地方,再煩請留言指正囉。