Scr*_*cro 9 git configuration repository-design dotfiles
我有一些在我的主目录"点"的文件,我想跟踪与git的-例如.pryrc,.zshrc等我想有这些文件的远程存储库,以便一)有恢复一个简单的方法我配置设置应该因任何原因丢失我的机器; 和b)安全地跟踪在配置更改时我搞砸的事件对文件所做的任何更改.
我最初在主目录中设置了一个git存储库来跟踪它们,并将.gitignore文件配置为忽略除特定白名单文件名之外的每个文件.但是,我意识到我并不是因为在我的主目录中有一个git存储库而感到疯狂,而且在我的终端窗口中看到分支名称"master"也更加分散注意力.我在设置中使用ZSH来在提示符中显示git分支,结果看到我在git存储库中导航到我不希望拥有存储库的目录时,结果令人惊讶和困惑.
我尝试在主文件夹下创建一个配置目录,将其初始化为git存储库,并为所需文件生成符号链接.但是,在添加并提交远程分支仅显示链接的所有内容后,我注意到,而不是文件的实际内容.
实现这一目标的最佳方法是什么?
这就是我弄清楚的方式:
首先,我创建了一个~/repositories/configurations/用于存放git存储库的目录.导航到此目录后,我git init像往常一样运行.
接下来,我创建了一个.gitignore文件,配置为忽略除白名单上的文件之外的所有文件.(请注意,您可以在提交之前的过程中执行此操作,但如果git status在设置之前运行,.gitignore则会看到很多未跟踪的文件).
# ignore everything
*
# except these whitelisted files:
!.gitignore
!.pryrc
!.zshrc
!.bashrc
!.bash_profile
!.bash_login
Run Code Online (Sandbox Code Playgroud)
然后将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
Run Code Online (Sandbox Code Playgroud)
从这里开始,我们git add ~/.bash_profile ~/.bashrc ~/.pryrc ~/.zshrc承诺.设置和推送到远程存储库是标准的.
一个注意事项 - 我决定我想要一个本地README.md文件来记录目录的目的以及它是如何配置的等等.我不希望这个文件在我的主文件夹中,它不在上下文中.创建README后,我必须使用-fflag将其添加到存储库:
git add -f README.md.
我试图将它添加到.gitignore白名单,但无法说服git找到具有路径变体的文件,例如!~/repositories/configurations/README.md等等.无论我如何尝试指定路径,git都没有看到该文件.虽然添加了力量,但它工作正常.比我更聪明的人可能会建议如何做到这一点.
这个过程就像一个魅力.我现在有一个工作存储库来跟踪点文件更改并远程安全地存储它们.