如何使用 Git 来跟踪用户的点文件?

How to use Git to track user's dotfiles?

和很多人一样,我在 GitHub 上有我的 。在我的 home 目录中有一个 .git 存储库有时会给我带来一些麻烦。

  1. git status 显示了很多未跟踪的文件。

我可以通过编写一个 .gitignore 忽略所有不是 dotfile 的东西来部分解决这个问题:

#.gitignore
!.*
.viminfo
.cache
# ...
  1. 我的主目录中的所有内容都成为我的 Git 存储库的一部分

如果我创建了一个新目录 mkdir foo && cd foo 而忘记了 git init 我将使用我的主 Git 存储库而不是我应该创建的新存储库。所以我想通过将 Git 限制为仅某些文件夹来避免这个问题。

因为我通常不 push/pull 我的点文件,所以我遇到了这个勾号,我在其中简单地重命名了我的主页 Git 存储库,当我不使用它时:

alias githide='mv .git .git_hidden'
alias gitshow='mv .git_hidden .git'

是否有更好的替代方案来解决这些问题?

我使用这些点文件的符号链接并将它们保存在单独的文件夹中。

$ cd ~
$ ln -s myDotfilesRepo/.gitconfig

如果您想更高级一点,可以使用 GNU Stow 来处理点文件。

假设您的点文件存储库具有以下结构:

.
├── git
│   ├── .gitconfig
│   └── .gitignore

然后您可以按以下方式使用 stow 安装整个 git 包。

cd ~
git clone git@github.com:user/dotfiles.git
cd dotfiles
stow git

结果是两个文件都被符号链接了

ls -la ~/.git*
lrwxrwxrwx  1 user user     27 aug.  13 10:17 .gitconfig -> dotfiles/git/.gitconfig
lrwxrwxrwx  1 user user     27 aug.  13 10:17 .gitignore -> dotfiles/git/.gitignore