我想在git的版本控制下将几个文件保存在不同的目录中。有些在我的主目录中,有些在/etc
,我显然不希望将根作为git存储库。
这可以通过将所有文件放在一个文件夹中并在其预期位置链接来实现,例如/etc/resolv.conf -> /home/tim/my-repo/etc-resolv.conf
,但没有必要为了适应版本控制软件而改变我的系统。
如何在不使用链接替换原件的情况下对文件进行版本控制?
答案 0 :(得分:1)
听起来你真正需要的是一个很好的备份解决方案。 Git不会做得好的一件事是文件属性,如所有者,组,权限,SELinux安全上下文。当您使用Git开始管理系统文件时,事情就会变得非常明显。
我会保持简单,并使用常见的备份实用程序,例如rsync
,cpio
,tar
和cron
以及合适的备份政策。
答案 1 :(得分:1)
git的整个想法是基于您在版本控制下有一个目录的假设。
一种可能的解决方案是将整个文件系统置于git下,但使用.gitignore
排除任何内容,但有一些例外。
答案 2 :(得分:0)
我认为没有可行的替代链接。
答案 3 :(得分:0)
使每个目录成为一个git repo,然后通过不同的分支名称推送到一个公共仓库。
希望这会有所帮助。
答案 4 :(得分:0)
Git最适合某些常见项目目录中的源代码管理,而不是不同目录中的单个文件。
有可能通过一些编码来捏造某些东西,例如:一个提交钩子,它读取它随后提交的文件列表,但是对那些远程文件进行git'notice'更改会很棘手; - )
答案 5 :(得分:0)
只是遇到了这个问题,因为我有同样的问题。我想对各个不同目录中的某些但不是全部系统配置文件和某些脚本进行版本控制。
我发现了两个可以在这里提供帮助的git功能:
您可以将.git目录替换为指向实际git目录的文件。这样,如果将.git文件放在/中,则可以将.git目录放置在选定的位置,并且仍然具有全局git。
.git文件的格式为:
gitdir: /path/to/your/.git
第二个是简单的全局排除。只需将全局通配符(*)添加到文件/ info / exclude。默认情况下,这不包括所有文件。要跟踪文件,您必须在'git add -f'中明确包含它。