为什么你应该把所有的 Linux 点文件都保存在 GitHub 上
总结
- 使用 git 管理 dotfile 可以节省时间并提供强大的备份选项。
- 将点文件存储在像 git 这样的版本控制系统 (VCS) 中可以确保在多台机器上实现一致的设置。
- 使用 GitHub 托管点文件可以轻松共享和协作。
Dotfile 是配置 Linux 系统的一种可访问且功能强大的方法。但是,您如何跟踪它们并在必要时重复使用它们呢?试试 git。
什么是 Dotfile?
在 Linux 上,名称以 “.” 开头的任何文件都是隐藏文件。默认情况下,它不会显示在您的文件管理器或命令行上的文件列表中。
一些 Linux 程序使用隐藏文件进行配置,通常会将它们转储到您的主目录中。这是一个有用的设置,因为它可以防止配置,同时确保它仍然可访问。由于此配置是纯文本文件,因此易于阅读和编辑。您还可以使用 Linux 命令行工具集来处理您的系统配置。
点文件的常见示例包括:
- .bashrc 和 .zshrc
- .exrc
- .gitconfig
- .npmrc
Git 或 GitHub 如何提供帮助?
点文件很棒,但它们是特定于系统的。当您需要更换计算机、使用辅助设备或访问远程服务器时,您可能会发现自己需要重新设置。
将点文件存储在 VCS(版本控制系统)中可以帮助您避免这种重复性任务,从而允许您立即在另一台计算机上重用您的配置。只需查看您的存储库,您将获得相同的 shell 别名、熟悉的主题和一致的行为。
更重要的是,在 git 中存储点文件是一个强大的备份选项。您甚至可以检查存储库的历史记录,以发现您更改特定配置的时间和原因。在协作环境中,您甚至可以通过 git 共享您的点文件,以确保所有团队成员都拥有一致的环境。
为此,GitHub 是其中的精华。如果你有另一个地方来托管你的 git 仓库,你当然可以这样做,但 GitHub 让它变得容易得多。
使用 Git 和 GitHub 管理 Dotfile 的最佳方式
首先,了解在 git 中存储任何形式的点文件都将是一个重大胜利。关于最佳方法,有具体的详细信息,但如果您可以在 git 中存储文件、更新它并检查它,您将从以这种方式管理您的点文件中受益匪浅。
但是,以下方法在网上被广泛推荐,它对我有用。这种特殊的设置应该可以帮助您以最少的努力使所有内容保持同步。
设置一个裸存储库和一些基架
由于你的主目录可能有很多你不需要的东西在你的 dotfiles 仓库中,所以最好避免使用标准设置。相反,您可以在裸存储库中管理您的点文件。
裸存储库就像没有实际项目文件的普通存储库。它包含描述这些文件历史记录的所有 git 元数据,只是没有文件本身。这些文件可以位于其他位置 — 在您的工作目录中 — 您只需使用裸存储库对它们进行版本控制。
首先在新位置创建一个裸存储库,例如:
mkdir $HOME/.dotfiles
git init --bare $HOME/.dotfiles
当您使用此存储库时,您需要提供一个工作目录(用于文件)和一个 git 目录(用于存储库本身):
git --work-tree=$HOME --git-dir=$HOME/.dotfiles ...
与其在每次使用 git 时都键入此内容,不如设置别名。您还可以提供裸存储库本身的路径,以便您可以从任何目录使用它:
alias dotfiles="/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME"
存储您的 Dotfile
首先确定要进行版本控制的点文件。
然后,您可以运行以下命令来开始对 .bashrc 文件进行版本控制,例如:
cd $HOME
dotfiles add .bashrc
dotfiles commit -m "Bash run control file"
除了使用 dotfiles 别名而不是普通的 git 命令外,你还可以像往常一样使用 git 来跟踪这些文件。这种方法实际上稍微简单一些,因为您可以从任何目录运行类似 “dotfiles log” 的命令。
将您的仓库上传到 GitHub
您可能会发现在 GitHub 等提供商上托管仓库很方便。这样可以更轻松地共享对点文件的访问,尤其是从不同网络上的机器共享。即使使用现有存储库,也很容易做到这一点:
- 从 Create a New Repository (创建新存储库) 页面开始。
- 输入 Repository name (存储库名称)。
- 选择 Public (公共) 或 Private (私有) 存储库;Private 可能是最好的(见下文)。
- 单击 Create Repository (创建存储库)。
此时,您将看到一个包含设置说明的屏幕。要推送现有存储库,只需运行以下两个命令:
dotfiles remote add origin https://github.com/<user>/<repo>.git
dotfiles push -u origin main
Where 是您的 GitHub 用户名,是您为仓库选择的名称。
将存储库上传到 GitHub 时要非常小心:您的 dotfile 可能包含敏感数据。理想情况下,应避免将包含密码的文件提交到任何存储库。如果您无法避免,请至少考虑使用私有 GitHub 存储库;但是,您需要为此付费。
在另一个系统上使用
要在另一台机器上共享你的点文件,你需要重复上述过程并检出裸仓库。特别是,这意味着有两个重要步骤。首先,签出仓库的裸副本:
cd $HOME
git clone --bare https://github.com/<user>/<repo>.git
这通常会签出到名为 .git 的目录中。签出后,您可以随意重命名此名称。
重新创建您正在使用的 git 包装器别名:
alias dotfiles="/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME"
现在,您可以使用版本控制的点文件填充您的工作目录 — 您的 HOME:
dotfiles checkout
此时,您可能会看到有关覆盖工作树文件的错误。这是因为您可能已经拥有旧的或默认的点文件,例如 .bashrc。只需删除或移动这些,然后重复结帐即可。
对 dotfile 进行版本控制将在您升级或切换系统时省去很多麻烦。您还可以查看完整的历史记录,并查看何时更改了什么以及为什么更改。