2016-04-27 69 views
0

和很多人一样,我在GitHub上有我的。在我的home目录中拥有.git存储库会导致我在某个时间出现问题。如何使用Git来跟踪用户的点文件?

  1. git status显示我大量未跟踪的文件。

我可以部分地通过编写一个.gitignore无视一切,是不是解决这个dotfile

#.gitignore 
!.* 
.viminfo 
.cache 
# ... 
  • 在我的主目录一切都变得的一部分我的Git仓库
  • 如果我创建一个新的目录mkdir foo && cd foo和忘记做git init我会用我家的Git回购而不是我应该创建的新存储库。所以我想通过将Git限制到某些文件夹来避免此问题。

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

    是否有更好的选择:

    正如我一般是不push/pull我点文件,我碰到这个打勾,当我不使用它,我只是重命名我的家Git仓库来了反对这些问题?

    +0

    “更好”是见仁见智,但我用的符号链接,例如,我的'〜/ .gitconfig'是一个符号链接' Dotfiles/gitconfig'(我放弃了版本库中的前导'.')。明显的缺点是记住做符号链接。不太明显的一点是,有些程序对符号链接保持警惕(到目前为止,我没有遇到过问题,ssh是在'.ssh'内检查符号链接的,但'.ssh'本身可以是符号链接)。 – torek

    回答

    2

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

    $ cd ~ 
    $ ln -s myDotfilesRepo/.gitconfig 
    

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

    比方说,你点文件回购具有以下结构:

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

    然后,你可以通过以下方式使用平放安装整个混帐包。

    cd ~ 
    git clone [email protected]: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 
    
    +0

    我做同样的事情。让你的主目录成为一个git仓库是一件令人头疼的事情,因为它里面会有其他的仓库等。 –