我想在Linux $ HOME目录中创建一个git repo 。在这个回购 - 显然 - 我可以在版本控制下添加所有内容,但这没有任何意义。我只想添加与我相关的文件和文件夹,例如 .vimrc , .vim , .bashrc 等。 (可能只有隐藏的文件和文件夹,但可能没有)
我知道我可以利用 .gitignore 来尝试实现这样的行为,但这将是痛苦的,几乎无法维护。相反,我想知道的是,是否有任何方法可以手动声明我想要管理的文件和文件夹,只有那样。
答案 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文件的影响。