如何正确地将点文件存储在集中式 git 存储库中

如何正确地将点文件存储在集中式 git 存储库中

我想将所有点文件(如 .profile、.gitconfig 等)放在中央 git 存储库中,这样我就可以更轻松地跟踪更改。我这样做了,但我想知道如何正确处理使它们与 ~/ 中的实际文件保持同步。我以为你可以使用 硬链接这两个文件ln,但这似乎没有像我预期的那样工作,即如果我编辑一个文件,另一个文件不会改变。也许我误用了命令ln,或者我误解了硬链接的工作原理。

人们通常怎么做呢?从 GitHub 来看,这是相当流行的做法,所以肯定有人想出了一种无缝的方式来做到这一点。

顺便说一下,我使用的是 Mac OS X 10.6。

答案1

许多 OS X 程序,例如文本编辑,以断开硬链接的方式保存文件。

至少在 Linux 上,符号链接通常用于此目的:

$ ln -s ~/dotfiles/bashrc ~/.bashrc

答案2

我一直在帮助开发一个工具来处理这个问题,叫做新鲜壳。它与 homesick 类似,但增加了能够从任何 GitHub 存储库中提取文件的功能,其理念是,你可以在获取自己的配置的同时,获取其他人的配置。

fresh 是一款将其他 shell 配置(别名、函数等)导入到您自己的配置文件中的工具。我们还支持 ackrc 和 gitconfig 等文件。您可以将其视为您的点文件的 Bundler。

答案3

实现无痛点文件管理的方法有很多,比如我见过最流行的一种是创建一个 git 仓库并符号链接点文件,虽然这种解决方案适用于存储,但它完全无痛吗?不!,您仍然需要在克隆 git 仓库后进行一些配置。

关于 CS 的事情是,我们总是可以做得更好,话虽如此,但存在一个更优雅的解决方案,只需使用 git。这里的技巧是创建一个bare存储库,而不是普通的存储库。

  1. bare通过执行以下操作在主目录中创建存储库git init --bare $HOME/.dotfiles
  2. 为方便起见,创建一个别名,名称dotfiles.zshrc
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME
  1. 您可以像普通 git 存储库一样使用它来添加、提交和推送。
# to check the status of the tracked and untracked files 
dotfiles status

# to add a file 
dotfiles commit .tmux.conf -m ".tmux.conf added"

# push new files or changes to the github
dotfiles push origin main

阅读更多关于如何自动安装应用程序和库的信息 -https://github.com/kalkayan/dotfiles

答案4

有一个rubygem:想家它解决了所有问题!它开箱即用地支持 github,并将为您符号链接所有内容。

专家提示:如果您对点文件进行了更改,您仍然需要在单独的目录中克隆存储库,从中进行更改并推送。然后用 homesick 将它们拉取。

如果您使用 VIM,还需要其他信息吗:

使用病原因为它在 git 中管理点文件时效果非常好。插件可以作为子模块添加,并且加载起来毫不费力。

相关内容