Two git repositories in one directory?
在一个目录中是否可以有2个git存储库?我认为不会,但我想问。基本上,我想检入主目录配置文件(例如.emacs),该文件在我使用的所有计算机上应该是公用的,但还有第二个本地文件存储库(例如.emacs.local),其中包含机器特定的配置。我能想到的唯一方法是将本地配置放在子目录中,并从主git存储库中忽略该子目录。还有其他想法吗?
- git subtree将完成工作。
-
如果您处理的文件不太多,则也可以创建符号链接/连接。
n
-
将其设置为别名会引发此错误:$ git config --global alias.pub'--git-dir =?/ Server / www / .gitpublic'$ git pub add。致命:别名" pub"更改环境变量您可以在别名中使用"!git"来执行此操作。在这种情况下,您将在哪里设置"!git"?
-
@JaredBroad有趣-我建议您使用Bash别名,而不是git别名。像alias gitone='git --git-dir=.gitone'
-
这里不应该是mv .git .gitone而不是git mv .git .gitone吗?我得到fatal: source directory is empty, source=.git, destination=.gitone
-
您可以将存储库配置为使用其自己的排除文件,并且可以跟踪这些文件,即gitone config core.excludesfile gitone.exclude和gitone add gitone.exclude。我制作了一个扩展此解决方案的脚本:github.com/capr/multigit
-
@JaredBroad我这样做是git config --global alias.youralias '!git --git-dir="/d/MyProject/_git"'然后是git youralias status :)
-
如果假设.gitignore文件通常是设置后遗忘的,则可以为每个存储库制作不同的副本,然后将相关版本作为别名的一部分复制到目录中。这适用于根目录中可能冲突的其他文件,例如README.md和.gitattributes。
如果我了解您在做什么,则可以在一个存储库中处理所有操作,对每台计算机使用单独的分支,以及一个包含公用主目录配置文件的分支。
初始化存储库并将公共文件提交给它,也许将MASTER分支重命名为Common。然后从那里为您使用的每台计算机创建一个单独的分支,并将特定于计算机的文件提交到该分支。每当您更改公用文件时,请将公用分支合并到每个计算机分支中,然后推送到其他计算机(如果有许多脚本,请编写脚本)。
然后在每台计算机上,检出该计算机的分支,该分支还将包括公共配置文件。
-
虽然子模块也可以工作,但我认为这对我来说是最好的方法。本地文件将遵循一个模板,当我在MASTER分支上对该模板进行更改时,我可以将它们合并到计算机本地分支中,以增量方式更新本地配置文件。谢谢您的帮助!
-
同时使用Mercurial和Git。
看看git子模块。
Submodules allow foreign repositories
to be embedded within a dedicated
subdirectory of the source tree,
always pointed at a particular commit.
- 对于需要放在目录根目录中的文件没有好处。唯一的机会就是填补这些链接的根源。
RichiH编写了一个名为vcsh的工具,该工具使用git \\的假裸仓库来管理点文件,从而将多个工作目录放入$ HOME。与csh AFAIK无关。
但是,如果您确实有多个目录,则可以使用gitslave替代git-submodules(这在最佳情况下是很痛苦的,而本示例用法不是最佳情况)是gitslave,它使从属存储库在始终保持分支提示,不需要三步过程即可更改子仓库(请签入正确的分支,
可以通过使用变量GIT_DIR来实现,但是如果您不知道自己在做什么,则有很多警告。
是的,子模块可能是您想要的。另一种选择是将工作副本放在子目录中,然后将符号链接从主目录指向所需的文件。
n
n
n