如何使用 git 跟踪主目录中的 "dot" 配置文件?
How do I track "dot" configuration files in my home directory with git?
我的主目录中有许多 "dot" 文件,我想使用 git 进行跟踪 - 例如.pryrc
、.zshrc
等。我想为这些文件创建一个远程存储库,以便 a) 如果我因任何原因丢失我的机器,有一种简单的方法可以恢复我的配置设置; b) 安全跟踪对文件所做的任何更改,以防万一我在配置更改时搞砸了。
我最初在主目录中设置了一个 git 存储库来跟踪它们,并配置了一个 .gitignore 文件来忽略除了特定的白名单文件名之外的所有文件。然而,我意识到我并不喜欢在我的主目录中有一个 git 存储库,而且在我的终端 window 中看到分支名称 "master" 也会让我分心。我使用带设置的 ZSH 在提示中显示 git 分支,结果令人惊讶和困惑的是看到我在 git 存储库中,同时在我不喜欢的目录中导航不希望有存储库。
我试图在主文件夹下创建一个配置目录,将其初始化为一个 git 存储库,并为所需文件生成 symlinks。但是,我注意到在添加并提交所有内容后,远程分支只显示了 link,而不是文件的实际内容。
实现此目标的最佳方法是什么?
我是这样想的:
首先,我创建了一个目录 ~/repositories/configurations/
,用于存放 git 存储库。导航到该目录后,我 运行 git init
照常。
接下来,我创建了一个 .gitignore
文件,配置为忽略除白名单上的文件之外的所有文件。 (请注意,您可以稍后在提交之前的过程中执行此操作,但是如果您在设置 .gitignore
之前 运行 git status
您会看到很多未跟踪的文件)。
# ignore everything
*
# except these whitelisted files:
!.gitignore
!.pryrc
!.zshrc
!.bashrc
!.bash_profile
!.bash_login
然后将 git 存储库指向不同的工作目录:
git config core.worktree "/User/username"
运行 git status
现在显示:
Untracked files:
(use "git add <file>..." to include in what will be committed)
../../.bash_login
../../.bash_profile
../../.bashrc
../../.gitignore
../../.pryrc
../../.zshrc
从这里开始,我们 git add ~/.bash_profile ~/.bashrc ~/.pryrc ~/.zshrc
并提交。设置并推送到远程存储库是标准操作。
请注意 - 我决定我想要一个本地 README.md 文件来记录目录的用途以及它的配置方式等。我不希望这个文件在我的主文件夹中断章取义。创建自述文件后,我不得不使用 -f
标志将其添加到存储库:
git add -f README.md
。
我试图将它添加到 .gitignore
白名单中,但无法说服 git 找到具有不同路径的文件,例如 !~/repositories/configurations/README.md
等等。无论我如何尝试指定路径 git 都没有看到该文件。不过,在用力添加后,它工作正常。比我聪明的人可能会建议如何做到这一点。
这个过程非常有效。我现在有一个工作存储库来跟踪点文件更改并安全地远程存储它们。
查看 Homesick,一个用于在 Git 存储库中跟踪点文件的框架。
它的工作原理是
- 创建一个 Git 存储库来跟踪您希望它管理的文件
- 将文件从您的主文件夹 (
~
) 符号链接到 Git 存储库
- 提供跟踪新文件的命令,commit/push/pull 更改
可以通过运行
安装
gem install homesick
然后按照文档开始跟踪您的文件。
我建议使用像 Homesick 这样的东西,因为它被证明有效,而且是微创的。它不会用 Git 存储库污染您的主文件夹,并且它允许您在您可能正在使用的任何机器上共享和恢复您的配置。
如果你想看看我是如何使用 Homesick 的,这里有一个link to my personal dotfiles repo。
Homesick 是使用 Ruby 构建的 - 如果您想要一个仅 Bash 的解决方案,请查看 Homeshick。
有关管理点文件的可用解决方案的完整列表,请查看 GitHub dotfiles page。
我的主目录中有许多 "dot" 文件,我想使用 git 进行跟踪 - 例如.pryrc
、.zshrc
等。我想为这些文件创建一个远程存储库,以便 a) 如果我因任何原因丢失我的机器,有一种简单的方法可以恢复我的配置设置; b) 安全跟踪对文件所做的任何更改,以防万一我在配置更改时搞砸了。
我最初在主目录中设置了一个 git 存储库来跟踪它们,并配置了一个 .gitignore 文件来忽略除了特定的白名单文件名之外的所有文件。然而,我意识到我并不喜欢在我的主目录中有一个 git 存储库,而且在我的终端 window 中看到分支名称 "master" 也会让我分心。我使用带设置的 ZSH 在提示中显示 git 分支,结果令人惊讶和困惑的是看到我在 git 存储库中,同时在我不喜欢的目录中导航不希望有存储库。
我试图在主文件夹下创建一个配置目录,将其初始化为一个 git 存储库,并为所需文件生成 symlinks。但是,我注意到在添加并提交所有内容后,远程分支只显示了 link,而不是文件的实际内容。
实现此目标的最佳方法是什么?
我是这样想的:
首先,我创建了一个目录 ~/repositories/configurations/
,用于存放 git 存储库。导航到该目录后,我 运行 git init
照常。
接下来,我创建了一个 .gitignore
文件,配置为忽略除白名单上的文件之外的所有文件。 (请注意,您可以稍后在提交之前的过程中执行此操作,但是如果您在设置 .gitignore
之前 运行 git status
您会看到很多未跟踪的文件)。
# ignore everything
*
# except these whitelisted files:
!.gitignore
!.pryrc
!.zshrc
!.bashrc
!.bash_profile
!.bash_login
然后将 git 存储库指向不同的工作目录:
git config core.worktree "/User/username"
运行 git status
现在显示:
Untracked files:
(use "git add <file>..." to include in what will be committed)
../../.bash_login
../../.bash_profile
../../.bashrc
../../.gitignore
../../.pryrc
../../.zshrc
从这里开始,我们 git add ~/.bash_profile ~/.bashrc ~/.pryrc ~/.zshrc
并提交。设置并推送到远程存储库是标准操作。
请注意 - 我决定我想要一个本地 README.md 文件来记录目录的用途以及它的配置方式等。我不希望这个文件在我的主文件夹中断章取义。创建自述文件后,我不得不使用 -f
标志将其添加到存储库:
git add -f README.md
。
我试图将它添加到 .gitignore
白名单中,但无法说服 git 找到具有不同路径的文件,例如 !~/repositories/configurations/README.md
等等。无论我如何尝试指定路径 git 都没有看到该文件。不过,在用力添加后,它工作正常。比我聪明的人可能会建议如何做到这一点。
这个过程非常有效。我现在有一个工作存储库来跟踪点文件更改并安全地远程存储它们。
查看 Homesick,一个用于在 Git 存储库中跟踪点文件的框架。
它的工作原理是
- 创建一个 Git 存储库来跟踪您希望它管理的文件
- 将文件从您的主文件夹 (
~
) 符号链接到 Git 存储库 - 提供跟踪新文件的命令,commit/push/pull 更改
可以通过运行
安装gem install homesick
然后按照文档开始跟踪您的文件。
我建议使用像 Homesick 这样的东西,因为它被证明有效,而且是微创的。它不会用 Git 存储库污染您的主文件夹,并且它允许您在您可能正在使用的任何机器上共享和恢复您的配置。
如果你想看看我是如何使用 Homesick 的,这里有一个link to my personal dotfiles repo。
Homesick 是使用 Ruby 构建的 - 如果您想要一个仅 Bash 的解决方案,请查看 Homeshick。
有关管理点文件的可用解决方案的完整列表,请查看 GitHub dotfiles page。