当前位置:  开发笔记 > 开发工具 > 正文

一个目录中有两个git存储库?

如何解决《一个目录中有两个git存储库?》经验,为你挑选了5个好方法。

是否可以在一个目录中拥有2个git存储库?我想不会,但我想我会问.基本上,我想检查我的主目录配置文件(例如.emacs),它应该在我工作的所有机器上是通用的,但是有本地文件的第二个存储库(例如.emacs.local),其中包含机器特定的配置.我能想到的唯一方法是将本地配置放在子目录中,并忽略主git存储库中的子目录.还有其他想法吗?



1> Chris Moschi..:

本文相对较好地介绍了这一点:

https://github.com/rrrene/gitscm-next/blob/master/app/views/blog/progit/2010-04-11-environment.markdown

基本上,如果您使用命令行工作,这比您猜测的更简单.假设你想要2个git repos:

.gitone
.gittwo

你可以像这样设置它们:

git init .
mv .git .gitone
git init .
mv .git .gittwo

您可以添加一个文件并将其提交给只有这样的文件:

git --git-dir=.gitone add test.txt
git --git-dir=.gitone commit -m "Test"

所以git的选项首先是命令,然后是命令,然后是git命令的选项.您可以轻松地为git命令添加别名,例如:

#!/bin/sh
alias gitone='git --git-dir=.gitone'
alias gittwo='git --git-dir=.gittwo'

因此,您可以通过少量输入来提交一个或另一个,例如gitone commit -m "blah".

看起来更棘手的是忽略.由于.gitignore通常位于项目根目录中,因此您需要找到一种方法来切换它,而无需切换整个根目录.或者,您可以使用.git/info/exclude,但是您执行的所有忽略都不会被提交或推送 - 这可能会搞砸其他用户.使用任何一个repo的其他人可能会推送.gitignore,这可能会导致冲突.我不清楚解决这些问题的最佳方法.

如果您更喜欢TortoiseGit等GUI工具,那么您也会遇到一些挑战.您可以编写一个小脚本,暂时将.gitone或.gittwo重命名为.git,以便满足这些工具的假设.


你可以配置repos使用他们自己的排除文件,你可以跟踪它们,即`gitone config core.excludesfile gitone.exclude`和`gitone add gitone.exclude`.我制作了一个扩展此解决方案的脚本:https://github.com/capr/multigit
@JaredBroad我这样做了`git config --global alias.youralias'!git --git-dir ="/ d/MyProject/_git"'```git youralias status` :)

2> Paul..:

如果我了解您正在做什么,您可以在一个存储库中处理所有内容,为每台计算机使用单独的分支,以及包含公共主目录配置文件的分支.

初始化repo并将公共文件提交给它,也许将MASTER分支重命名为Common.然后为您使用的每台机器创建一个单独的分支,并将特定于机器的文件提交到该分支.每次更改公共文件时,将公共分支合并到每个机器分支中并推送到其他计算机(如果有很多,请编写脚本).

然后在每台机器上,检查该机器的分支,它还包括公共配置文件.



3> Hates_..:

看看git子模块.

子模块允许外部存储库嵌入源树的专用子目录中,始终指向特定的提交.


对于需要位于目录根目录的文件没有用处.只有这样的机会,是将符号链接的根填充到这些.

4> 小智..:

通过使用变量是可能的,GIT_DIR但是如果您不知道自己在做什么,则有很多警告。



5> Seth Roberts..:

RichiH编写了一个名为vcsh的工具,它是一个使用git的虚假存储库管理dotfiles的工具,可以将多个工作目录放入$ HOME.与csh AFAIK无关.

但是,如果你确实有多个目录,那么git-submodules的替代方案(在最好的情况下这是一种痛苦,而这个例子的使用并不是最好的情况)是gitslave,它会让奴隶回购在在任何时候都是分支,并且不需要三步过程来对子公司仓库进行更改(签出到正确的分支,进行并提交更改,然后进入超级项目并提交新的子模块提交).

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有