如何使用 Git 来跟踪用户的点文件?
How to use Git to track user's dotfiles?
和很多人一样,我在 GitHub 上有我的 dotfiles。在我的 home
目录中有一个 .git
存储库有时会给我带来一些麻烦。
git status
显示了很多未跟踪的文件。
我可以通过编写一个 .gitignore
忽略所有不是 dotfile 的东西来部分解决这个问题:
#.gitignore
!.*
.viminfo
.cache
# ...
- 我的主目录中的所有内容都成为我的 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
和很多人一样,我在 GitHub 上有我的 dotfiles。在我的 home
目录中有一个 .git
存储库有时会给我带来一些麻烦。
git status
显示了很多未跟踪的文件。
我可以通过编写一个 .gitignore
忽略所有不是 dotfile 的东西来部分解决这个问题:
#.gitignore
!.*
.viminfo
.cache
# ...
- 我的主目录中的所有内容都成为我的 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