如何将 $HOME git 仓库(选择性地)上传至 Github?

4

我在我的主目录下保存了许多与git相关的文件,包括重要的点文件、我的论文等。

我想推送某些文件到github上,例如我的emacs配置文件,以共享使用。

显然,我不想推送整个仓库。使用子模块是正确的方法吗?

我的第一个想法是创建一个~/github/emacs目录,并将选择性的文件同步到此处,然后在该目录下添加一个指向github的子模块进行推送。

这是一个好主意吗?还是有更好的方法?

(虽然如此,我也不想让我的本地git仓库存储所有的文件与这些东西混淆。)

3个回答

6
我也将我的dotfiles(和其他配置文件)存储在github上。我的方法是只在repo内部存储所有这些文件,并使用rake任务将它们链接到指定位置。这样做的好处是你的实际主目录不在git repo中,你也不必处理到处都是子模块的混乱情况,因为这可能会变得难以维护(并且阻碍了你的dotfiles和其他东西的可重用性)。如果需要灵感,可以在此处找到我的dotfiles存储库:https://github.com/meineerde/dotfiles 一般来说,我建议您使用更多的小型git存储库,每个单独的项目一个。此外,您应该尽量保持库结构(特别是子模块)简单,以便于维护。只需将您的材料并排放置,并为每个新项目创建一个新的git存储库。
我不建议使用硬链接(如Martinho Fernandes所提出的), 因为某些文件系统操作很容易破坏链接,并且很难确定是否有硬链接存在。

非常酷。那么,“rake”是一种工具,任何不使用Ruby的Unix白痴都可以将其添加到混合中而不触发脑溢出吗?您的Rakefile似乎足够简单,但是否存在隐藏的复杂性?它是否管理除符号链接列表之外的任何内容? - ScoBe
Rake是Ruby的构建工具,就是这么简单。没有什么复杂的东西。如果你在任何地方使用Ruby,你都会使用Rake。但是,如果必须的话,你可以轻松地将Rake任务转换为shell脚本、makefile甚至Perl脚本。它基本上只是一组ln -sf调用的包装器。 - Holger Just
我也这样做,但是在代码库中使用Bash脚本进行安装。另外,我会使用独立的小型代码库,一个用于shell相关内容,一个用于vim等等。它运行得很好,脚本为您提供了一个良好的地方来完成任何其他相关的设置。 - ergosys

0

我不喜欢在我的点文件 git 目录中使用符号链接,因为很难跟踪。我已经切换到使用内部的 .git 目录和 git 别名;这是我关于 使用 git 版本控制 dotfiles 的写作。


0
你可以创建一个目录~/github/emacs,并将硬链接放置在那里以代表实际的文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接