把“點檔案”放到版本控制中
透過在 GitLab 或 GitHub 上分享你的點檔案,可以在整個系統上備份或同步你的自定義配置。
透過隱藏檔案集(稱為點檔案)來定製作業系統是個非常棒的想法。在這篇 Shell 點檔案可以為你做點什麼中,H. Waldo
Grunenwald 詳細介紹了為什麼以及如何設定點檔案的細節。現在讓我們深入探討分享它們的原因和方式。
什麼是點檔案?
“點檔案”是指我們計算機中四處漂泊的配置檔案。這些檔案通常在檔名的開頭以 .
開頭,例如 .gitconfig
,並且作業系統通常在預設情況下將其隱藏。例如,當我在 MacOS 上使用 ls -a
時,它才會顯示所有可愛的點檔案,否則就不會顯示這些點檔案。
dotfiles on master
➜ ls
README.md Rakefile bin misc profiles zsh-custom
dotfiles on master
➜ ls -a
. .gitignore .oh-my-zsh README.md zsh-custom
.. .gitmodules .tmux Rakefile
.gemrc .global_ignore .vimrc bin
.git .gvimrc .zlogin misc
.gitconfig .maid .zshrc profiles
如果看一下用於 Git 配置的 .gitconfig
,我能看到大量的自定義配置。我設定了帳戶資訊、終端顏色首選項和大量別名,這些別名可以使我的命令列介面看起來就像我的一樣。這是 [alias]
塊的摘錄:
87 # Show the diff between the latest commit and the current state
88 d = !"git diff-index --quiet HEAD -- || clear; git --no-pager diff --patch-with-stat"
89
90 # `git di $number` shows the diff between the state `$number` revisions ago and the current state
91 di = !"d() { git diff --patch-with-stat HEAD~$1; }; git diff-index --quiet HEAD -- || clear; d"
92
93 # Pull in remote changes for the current repository and all its submodules
94 p = !"git pull; git submodule foreach git pull origin master"
95
96 # Checkout a pull request from origin (of a github repository)
97 pr = !"pr() { git fetch origin pull/$1/head:pr-$1; git checkout pr-$1; }; pr"
由於我的 .gitconfig
有 200 多行的自定義設定,我無意於在我使用的每一臺新計算機或系統上重寫它,其他人肯定也不想這樣。這是分享點檔案變得越來越流行的原因之一,尤其是隨著社交編碼網站 GitHub 的興起。正式提倡分享點檔案的文章是 Zach Holman 在 2008 年發表的《點檔案意味著被複刻》。其前提到今天依然如此:我想與我自己、與點檔案新手,以及那些分享了他們的自定義配置從而教會了我很多知識的人分享它們。
分享點檔案
我們中的許多人擁有多個系統,或者知道硬碟變化無常,因此我們希望備份我們精心策劃的自定義設定。那麼我們如何在環境之間同步這些精彩的檔案?
我最喜歡的答案是分散式版本控制,最好是可以為我處理繁重任務的服務。我經常使用 GitHub,隨著我對 GitLab 的使用經驗越來越豐富,我肯定會一如既往地繼續喜歡它。任何一個這樣的服務都是共享你的資訊的理想場所。要自己設定的話可以這樣做:
- 登入到你首選的基於 Git 的服務。
- 建立一個名為
dotfiles
的儲存庫。(將其設定為公開!分享即關愛。) - 將其克隆到你的本地環境。(你可能需要設定 Git 配置命令來克隆儲存庫。GitHub 和 GitLab 都會提示你需要執行的命令。)
- 將你的點檔案複製到該資料夾中。
- 將它們符號連結回到其目標資料夾(最常見的是
$HOME
)。 - 將它們推送到遠端儲存庫。
上面的步驟 4 是這項工作的關鍵,可能有些棘手。無論是使用指令碼還是手動執行,工作流程都是從 dotfiles
資料夾符號連結到點檔案的目標位置,以便對點檔案的任何更新都可以輕鬆地推送到遠端儲存庫。要對我的 .gitconfig
檔案執行此操作,我要輸入:
$ cd dotfiles/
$ ln -nfs .gitconfig $HOME/.gitconfig
新增到符號連結命令的標誌還具有其他一些用處:
-s
建立符號連結而不是硬連結。-f
在發生錯誤時繼續做其他符號連結(此處不需要,但在迴圈中很有用)-n
避免符號連結到一個符號連結檔案(等同於其他版本的ln
的-h
標誌)
如果要更深入地研究可用引數,可以檢視 IEEE 和開放小組的 ln 規範以及 MacOS 10.14.3 上的版本。自從其他人的點檔案中拉取出這些標誌以來,我才發現了這些標誌。
你還可以使用一些其他程式碼來簡化更新,例如我從 Brad Parbs 復刻的 Rakefile。另外,你也可以像 Jeff Geerling 在其點檔案中那樣,使它保持極其簡單的狀態。他使用此 Ansible 劇本對檔案進行符號連結。這樣使所有內容保持同步很容易:你可以從點檔案的資料夾中進行 cron 作業或偶爾進行 git push
。
簡單旁註:什麼不能分享
在繼續之前,值得注意的是你不應該新增到共享的點檔案儲存庫中的內容 —— 即使它以點開頭。任何有安全風險的東西,例如 .ssh/
資料夾中的檔案,都不是使用此方法分享的好選擇。確保在線上釋出配置檔案之前仔細檢查配置檔案,並再三檢查檔案中沒有 API 令牌。
我應該從哪裡開始?
如果你不熟悉 Git,那麼我有關 Git 術語的文章和常用命令備忘清單將會幫助你繼續前進。
還有其他超棒的資源可幫助你開始使用點檔案。多年前,我就發現了 dotfiles.github.io,並繼續使用它來更廣泛地瞭解人們在做什麼。在其他人的點檔案中隱藏了許多秘傳知識。花時間瀏覽一些,大膽地將它們新增到自己的內容中。
我希望這是讓你在計算機上擁有一致的點檔案的快樂開端。
你最喜歡的點檔案技巧是什麼?新增評論或在 Twitter 上找我 @mbbroberg。
via: https://opensource.com/article/19/3/move-your-dotfiles-version-control
作者:Matthew Broberg 選題:lujun9972 譯者:wxy 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
相關文章
- Zoey.Dapper–Dapper擴充套件之把SQL語句放到檔案中APP套件SQL
- 把多個資料夾中的檔案批量放到一個資料夾
- 1到100迴圈,並把奇數放到陣列中,把偶數放到map中陣列
- win10怎麼把電腦桌面的東西放到別的盤_win10如何把桌面檔案放到其他盤Win10
- 使用git不希望檔案被版本控制Git
- git移除已經加入版本控制的檔案Git
- 把 Go 放到 Nginx C module 之中GoNginx
- 把專案放到EPP可以嗎?我的怎麼報錯
- win10怎麼把關機放到桌面 win10如何把關機圖示放到桌面Win10
- 把 .xyz 檔案轉換成 .ply 檔案
- 多專案Node版本控制
- win10 如何把輸入法放到通知欄_win10怎麼把輸入法放到工作列Win10
- Oracle 控制檔案Oracle
- Git版本控制與優缺點Git
- 【RMAN】Oracle中如何備份控制檔案?備份控制檔案的方式有哪幾種?Oracle
- Linux下把sra檔案轉成fastq檔案LinuxAST
- 開源專案中,如何遵循語義化版本控制
- 如何把大 Excel 檔案拆成多個小檔案Excel
- 產生10個1-100的隨機數,並放到一個陣列中,把陣列中大於等於10的數字放到一個list集合中,並列印到控制檯。隨機陣列
- 2.6.4 指定控制檔案
- flutter中的多版本控制Flutter
- pdf壓縮教程:如何把pdf檔案壓縮得小一點
- 把你的程式放到桌面——Android桌面部件WidgetAndroid
- 如何使用python把json檔案轉換為csv檔案PythonJSON
- win10系統怎麼把網頁放到桌面上 win10電腦如何把網頁放到桌面上Win10網頁
- win10如何把桌面1的東西放到桌面2_win10怎麼把桌面1的東西放到桌面2Win10
- 轉:Intellij idea Version Control File Status Colors ( 版本控制檔案狀態顏色 )IntelliJIdea
- win10如何把txt更改為bat檔案_win10系統把檔案更改為bat檔案的方法Win10BAT
- VersionRecall 2022,檔案版本管理
- java 把檔案壓縮成 zipJava
- 清除Oracle控制檔案中的歸檔資訊v$archived_logOracleHive
- 把selection screen當子螢幕放到普通螢幕上
- php 把檔案加入到現有的zip壓縮包中PHP
- win10 圖示怎麼放到工作列_win10怎麼把圖示放到工作列Win10
- win10怎麼把檔案加入白名單 win10把檔案加入白名單的方法Win10
- Java專案除錯技巧及版本控制Java除錯
- 對專案版本自動控制——利用gitversionGit
- 實現git版本控制中專案某一個檔案可以不提交,只在本地git生效,不影響線上gitGit