7個管理家目錄的 Git 技巧
我有好幾台電腦。一台筆記本電腦用於工作,一台工作站放在家裡,一台樹莓派(或四台),一台 Pocket CHIP,一台 運行各種不同的 Linux 的 Chromebook,等等。我曾經在每台計算機上或多或少地按照相同的步驟設置我的用戶環境,也經常告訴自己讓每台計算機都略有不同。例如,我在工作中比在家裡更經常使用 Bash 別名,並且我在家裡使用的輔助腳本可能對工作沒有用。
這些年來,我對各種設備的期望開始相融,我會忘記我在家用計算機上建立的功能沒有移植到我的工作計算機上,諸如此類。我需要一種標準化我的自定義工具包的方法。使我感到意外的答案是 Git。
Git 是版本跟蹤軟體。它以既可以用在非常大的開源項目也可以用在極小的開源項目而聞名,甚至最大的專有軟體公司也在用它。但是它是為源代碼設計的,而不是用在一個裝滿音樂和視頻文件、遊戲、照片等的家目錄。我聽說過有人使用 Git 管理其家目錄,但我認為這是程序員們進行的一項附帶實驗,而不是像我這樣的現實生活中的用戶。
用 Git 管理我的家目錄是一個不斷發展的過程。隨著時間的推移我一直在學習和適應。如果你決定使用 Git 管理家目錄,則可能需要記住以下幾點。
1、文本和二進位位置
![家目錄](/data/attachment/album/202104/20/095235dj92wawwt1jx25iw.jpg "home directory")
當由 Git 管理時,除了配置文件之外,你的家目錄對於所有內容而言都是「無人之地」。這意味著當你打開主目錄時,除了可預見的目錄的列表之外,你什麼都看不到。不應有任何雜亂無章的照片或 LibreOffice 文檔,也不應有 「我就在這裡放一分鐘」 的臨時文件。
原因很簡單:使用 Git 管理家目錄時,家目錄中所有 未 提交的內容都會變成噪音。每次執行 git status
時,你都必須翻過去之前 Git 未跟蹤的任何文件,因此將這些文件保存在子目錄(添加到 .gitignore
文件中)至關重要。
許多 Linux 發行版提供了一組默認目錄:
Documents
Downloads
Music
Photos
Templates
Videos
如果需要,你可以創建更多。例如,我把創作的音樂(Music
)和購買來聆聽的音樂(Albums
)區分開來。同樣,我的電影(Cinema
)目錄包含了其他人的電影,而視頻(Videos
)目錄包含我需要編輯的視頻文件。換句話說,我的默認目錄結構比大多數 Linux 發行版提供的默認設置更詳細,但是我認為這樣做有好處。如果沒有適合你的目錄結構,你更會將其存放在家目錄中,因為沒有更好的存放位置,因此請提前考慮並規劃好適合你的工作目錄。你以後總是可以添加更多,但是最好先開始擅長的。
2、、設置最優的 .gitignore
清理家目錄後,你可以像往常一樣將其作為 Git 存儲庫實例化:
$ cd
$ git init .
你的 Git 倉庫中還沒有任何內容,你的家目錄中的所有內容均未被跟蹤。你的第一項工作是篩選未跟蹤文件的列表,並確定要保持未跟蹤狀態的文件。要查看未跟蹤的文件:
$ git status
.AndroidStudio3.2/
.FBReader/
.ICEauthority
.Xauthority
.Xdefaults
.android/
.arduino15/
.ash_history
[...]
根據你使用家目錄的時間長短,此列表可能很長。簡單的是你在上一步中確定的目錄。通過將它們添加到名為 .gitignore
的隱藏文件中,你告訴 Git 停止將它們列為未跟蹤文件,並且永遠不對其進行跟蹤:
$ ls -lg | grep ^d | awk '{print $8}' >> ~/.gitignore
完成後,瀏覽 git status
所示的其餘未跟蹤文件,並確定是否有其他文件需要排除。這個過程幫助我發現了幾個陳舊的配置文件和目錄,這些文件和目錄最終被我全部丟棄了,而且還發現了一些特定於一台計算機的文件和目錄。我在這裡非常嚴格,因為許多配置文件在自動生成時會表現得更好。例如,我從不提交我的 KDE 配置文件,因為許多文件包含了諸如最新文檔之類的信息以及其他機器上不存在的其他元素。
我會跟蹤我的個性化配置文件、腳本和實用程序、配置文件和 Bash 配置,以及速查表和我經常引用的其他文本片段。如果有軟體主要負責維護的文件,則將其忽略。當對一個文件不確定時,我將其忽略。你以後總是可以取消忽略它(通過從 .gitignore
文件中刪除它)。
3、了解你的數據
我使用的是 KDE,因此我使用開源掃描程序 Filelight 來了解我的數據概況。Filelight 為你提供了一個圖表,可讓你查看每個目錄的大小。你可以瀏覽每個目錄以查看佔用了空間的內容,然後回溯調查其他地方。這是一個令人著迷的系統視圖,它使你可以以全新的方式看待你的文件。
![Filelight](/data/attachment/album/202104/20/095235lnw5j93lfyfsisnb.jpg "Filelight")
使用 Filelight 或類似的實用程序查找不需要提交的意外數據緩存。例如,KDE 文件索引器(Baloo)生成了大量特定於其主機的數據,我絕對不希望將其傳輸到另一台計算機。
4、不要忽略你的 .gitignore
文件
在某些項目中,我告訴 Git 忽略我的 .gitignore
文件,因為有時我要忽略的內容特定於我的工作目錄,並且我不認為同一項目中的其他開發人員需要我告訴他們 .gitignore
文件應該是什麼樣子。因為我的家目錄僅供我使用,所以我 不 會忽略我的家目錄的 .gitignore
文件。我將其與其他重要文件一起提交,因此它已在我的所有系統中被繼承。當然,從家目錄的角度來看,我所有的系統都是相同的:它們具有一組相同的默認文件夾和許多相同的隱藏配置文件。
5、不要擔心二進位文件
我對我的系統進行了數周的嚴格測試,確信將二進位文件提交到 Git 絕對不是明智之舉。我試過 GPG 加密的密碼文件、試過 LibreOffice 文檔、JPEG、PNG 等等。我甚至有一個腳本,可以在將 LibreOffice 文件添加到 Git 之前先解壓縮,提取其中的 XML,以便僅提交 XML,然後重新構建 LibreOffice 文件,以便可以在 LibreOffice 中繼續工作。我的理論是,提交 XML 會比使用 ZIP 文件(LibreOffice 文檔實際上就是一個 ZIP 文件)會讓 Git 存儲庫更小一些。
令我驚訝的是,我發現偶爾提交一些二進位文件並沒有大幅增加我的 Git 存儲庫的大小。我使用 Git 已經很長時間了,我知道如果我要提交幾千兆的二進位數據,我的存儲庫將會受到影響,但是偶爾提交幾個二進位文件也不是不惜一切代價要避免的緊急情況。
有了這種信心,我將字體 OTF 和 TTF 文件添加到我的標準主存儲庫,以及 GDM 的 .face
文件以及其他偶爾小型二進位 Blob 文件。不要想太多,不要浪費時間去避免它。只需提交即可。
6、使用私有存儲庫
即使託管方提供了私人帳戶,也不要將你的主目錄提交到公共 Git 存儲庫。如果你像我一樣,擁有 SSH 密鑰、GPG 密鑰鏈和 GPG 加密的文件,這些文件不應該出現在任何人的伺服器上,而應該出現在我自己的伺服器上。
我在樹莓派上 運行本地 Git 伺服器(這比你想像的要容易),因此我可以在家裡時隨時更新任何一台計算機。我是一名遠程工作者,所以通常情況下就足夠了,但是我也可以在旅行時通過 虛擬私人網路 訪問我的計算機。
7、要記得推送
Git 的特點是,只有當你告訴它要推送改動時,它才會把改動推送到你的伺服器上。如果你是 Git 的老用戶,則此過程可能對你很自然。對於可能習慣於 Nextcloud 或 Syncthing 自動同步的新用戶,這可能需要一些時間來適應。
Git 家目錄
使用 Git 管理我的常用文件,不僅使我在不同設備上的生活更加便利。我知道我擁有所有配置和實用程序腳本的完整歷史記錄,這會鼓勵我嘗試新的想法,因為如果結果變得 很糟糕,則很容易回滾我的更改。Git 曾將我從在 .bashrc
文件中一個欠考慮的 umask
設置中解救出來、從深夜對包管理腳本的拙劣添加中解救出來、從當時看似很酷的 rxvt 配色方案的修改中解救出來,也許還有其他一些錯誤。在家目錄中嘗試 Git 吧,因為這些提交會讓家目錄融合在一起。
via: https://opensource.com/article/21/4/git-home
作者:Seth Kenlon 選題:lujun9972 譯者:stevenzdg988 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive