我的主目录中有许多“点”文件,我想用git跟踪 - 例如.pryrc
,.zshrc
等。我想拥有这些文件的远程存储库,以便a)如果我因任何原因丢失机器,有一种简单的方法来恢复配置设置; b)在配置更改时我搞砸了一些事情,以便安全地跟踪对文件所做的任何更改。
我最初在主目录中设置了一个git存储库来跟踪它们,并将.gitignore文件配置为忽略除特定白名单文件名之外的所有文件。但是,我意识到我并不是因为在我的主目录中有一个git存储库而感到疯狂,而且在我的终端窗口中看到分支名称“master”也更加分散了注意力。我使用ZSH设置来在提示符中显示git分支,结果发现我在git存储库中导航到我不希望拥有存储库的目录时会感到惊讶和困惑。< / p>
我尝试在主文件夹下创建配置目录,将其初始化为git存储库,并为所需文件生成符号链接。但是,在添加并提交远程分支仅显示链接的所有内容后,我注意到,而不是文件的实际内容。
实现这一目标的最佳方法是什么?
答案 0 :(得分:6)
这就是我弄清楚的:
首先,我创建了一个目录~/repositories/configurations/
,用于存放git存储库。导航到此目录后,我照常运行git init
。
接下来,我创建了一个.gitignore
文件,配置为忽略除白名单上的文件之外的所有文件。 (请注意,您可以在提交之前的过程中执行此操作,但如果在设置git status
之前运行.gitignore
,则会看到大量未跟踪的文件。
# 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文件来记录目录的用途以及它的配置方式等等。我不希望这个文件在我的主文件夹中,它会脱离上下文。创建README后,我必须使用-f
标志将其添加到存储库中:
git add -f README.md
。
我尝试将其添加到.gitignore
白名单,但无法说服git找到包含路径变体的文件,例如!~/repositories/configurations/README.md
等等。无论我如何尝试指定路径,git都没有看到该文件。虽然添加了力量,但它工作正常。比我聪明的人可能会建议如何做到这一点。
这个过程就像一个魅力。我现在有一个工作存储库来跟踪点文件更改并远程安全地存储它们。
答案 1 :(得分:3)
查看Homesick,这是一个用于跟踪Git仓库中的dotfiles的框架。
它的工作原理是
~
)中的文件链接到Git仓库您可以通过运行
来安装它gem install homesick
然后按照文档开始跟踪文件。
我建议使用像Homesick这样的东西,因为它被证明是有效的,而且是微创的。它不会使用Git repo污染您的主文件夹,它允许您在可能正在处理的任何计算机上共享和恢复您的配置。
如果您想了解我是如何使用Homesick的,请link to my personal dotfiles repo。
Homesick是使用Ruby构建的 - 如果您想要一个仅限Bash的解决方案,请查看Homeshick。
有关管理点文件的可用解决方案的完整列表,请查看GitHub dotfiles page。