使用git管理主目录

时间:2014-01-21 19:07:58

标签: git

我想在Linux $ HOME目录中创建一个git repo 。在这个回购 - 显然 - 我可以在版本控制下添加所有内容,但这没有任何意义。我只想添加与我相关的文件和文件夹,例如 .vimrc .vim .bashrc 等。 (可能只有隐藏的文件和文件夹,但可能没有)

我知道我可以利用 .gitignore 来尝试实现这样的行为,但这将是痛苦的,几乎无法维护。相反,我想知道的是,是否有任何方法可以手动声明我想要管理的文件和文件夹,只有那样。

5 个答案:

答案 0 :(得分:38)

<强>的.gitignore

# Ignore everything
*

# But not these files...
!*.vimrc
!*.vim
!*.bashrc
!.gitignore

# etc...

答案 1 :(得分:16)

我会设置一个别名,仅用于您的主页回购 通过这种方式,您可以使用别名代替git命令,并始终知道您正在使用的上下文

# .bashrc
alias home='git --work-tree=$HOME --git-dir=$HOME/.home'

发出命令

$ home init

将在您的$ HOME中的.home文件夹中创建一个repo,与当前目录无关,您可以使用别名&home;&#39;代替&#39; git&#39;

这与.gitignore一起应该是您所需要的一切。

# .gitignore
*
# keep track
!.bashrc
!.gitignore

NB。请勿将.ssh / keys保存在repo中,因为它会显示文件权限和安全问题。

答案 2 :(得分:10)

我建议将你的$ HOME目录置于git版本控制之下。我做到了这一点,因为我认为我非常聪明,并希望我的.dotfiles受版本控制。然而,git是贪婪和贪婪的。我不得不在我的$ HOME / .gitignore中添加大量目录(甚至*)。你的主目录中的其他地方有任何git存储库吗?我做到了。但是这些git存储库将使用你的$ HOME / .gitignore作为你的全局.gitignore,除非你在其他地方设置它。因此,尝试在这些子目录存储库中添加文件真的很痛苦。

相反,请将重要文件放在单独的目录中。说,〜/ dotfiles。现在将它作为一个git存储库,并将所有重要的.dot文件符号链接到指向该新存储库。瞧。问题已经解决,尽管有一些时间投入到链接中。

答案 3 :(得分:7)

我认为你正在寻找dotfiles

答案 4 :(得分:0)

我认为最好的方法是在其他地方设置一个git存储库(最好是物理上不同的磁盘)并在其中添加文件。
您可以使用执行来创建空的git repo (在安全的文件系统中,最好是不同的磁盘,如/ home1)

sudo git init --bare mynewrepos.git
sudo chown -fR myself mynewrepos.git
sudo chgrp -fR myself mynewrepos.git

现在,转到您的主目录,然后执行

git clone /home1/mynewrepos.git   # now you are cloning from empty git repos.

然后将您的宝贵文件添加到git(git add,git commit,git push ..等等)。我没有尝试将我的常用文件保存在我的家中,但是我使用这种方法来管理我的本地项目文件(在上传到官方git repos之前)。但同样,如果您家中有许多git托管文件,它们可能会受到您家中的.gitignore文件的影响。