10

我的主目录中有许多“点”文件,我想用 git 跟踪它们 - 例如.pryrc.zshrc等。我想为这些文件建立一个远程存储库,以便 a) 有一种简单的方法来恢复我的如果我因为任何原因丢失了我的机器,配置设置;b) 安全地跟踪对文件所做的任何更改,以防我在配置更改时搞砸了。

我最初在主目录中设置了一个 git 存储库来跟踪它们,并使用 .gitignore 文件配置为忽略除特定的白名单文件名之外的所有文件。然而,我意识到我并不热衷于在我的主目录中拥有一个 git 存储库,而且在我的终端窗口中看到分支名称“master”也会让人分心。我使用带有设置的 ZSH 在提示符中显示 git 分支,结果发现我在一个 git 存储库中,同时在我不希望有存储库的目录中导航,结果令人惊讶和困惑。

我尝试在主文件夹下创建一个配置目录,将其初始化为 git 存储库,并生成指向所需文件的符号链接。但是,我在添加并提交远程分支仅显示链接的所有内容后注意到,而不是文件的实际内容。

实现这一目标的最佳方法是什么?

4

2 回答 2

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 文件来记录目录的用途以及它的配置方式等。我不希望这个文件在我的主文件夹中,因为它会脱离上下文。创建自述文件后,我必须使用-f标志将其添加到存储库:

git add -f README.md.

我试图将它添加到.gitignore白名单中,但无法说服 git 找到具有不同路径的文件,例如!~/repositories/configurations/README.md等等。无论我如何尝试指定路径,git 都没有看到该文件。不过用力添加后,它工作正常。比我聪明的人可能会建议如何做到这一点。

这个过程就像一个魅力。我现在有一个工作存储库来跟踪点文件更改并安全地远程存储它们。

于 2015-08-05T19:58:07.503 回答
4

查看Homesick,这是一个用于在 Git 存储库中跟踪您的点文件的框架。

它的工作原理

  • 创建一个 Git 存储库来跟踪您希望它管理的文件
  • 将主文件夹 ( ~) 中的文件符号链接到 Git存储库
  • 提供命令来跟踪新文件、提交/推送/拉取更改

您可以通过运行安装它

gem install homesick

然后按照文档开始跟踪您的文件。

我建议使用 Homesick 之类的东西,因为它被证明是有效的,并且是微创的。它不会使用 Git 存储库污染您的主文件夹,它允许您在您可能正在使用的任何机器上共享和恢复您的配置。

如果你想看看我是如何使用 Homesick的,这里是我的个人 dotfiles repo 的链接。

Homesick 是使用 Ruby 构建的——如果你想要一个仅限 Bash 的解决方案,请查看Homeshick

有关管理点文件的可用解决方案的完整列表,请查看GitHub 点文件页面

于 2015-08-06T06:29:41.663 回答