一个目录git中有两个独占的存储库

时间:2016-12-02 17:06:32

标签: git

对于IC设计类,我需要将VNC转换为Linux服务器来访问工具并设计电路和测试台。最初我只有一个存储库,我正在推动一切,但我们已经开始分组项目,并且在每个人之间分配设计的最佳方式似乎是通过Git。我需要一种方法将我的类目录分成两个独立的存储库。

文件结构

class
├── Lib
|   ├── inverter
|   ├── nand2
|   ├── nor2
|   └── proj
└── LibTest
    ├── inverter
    ├── nand2
    ├── nor2
    └── proj

所需的项目存储库

class
├── Lib
|   └── proj
└── LibTest
    └── proj

Desired Lab Repository

class
├── Lib
|   ├── inverter
|   ├── nand2
|   └── nor2
└── LibTest
    ├── inverter
    ├── nand2
    └── nor2

除非我在class目录中拥有主存储库并为Lib\proj\LibTest\proj创建两个单独的存储库,否则我无法找到实现此目的的方法,但我会如果将两个项目目录捆绑在一起,就好像它们位于同一个存储库中一样。

更新

2016-12-02 02:10 PM CST

好的,我在课堂上设置了两个单独的git存储库,并将它们重命名为.gitproj& .gitlab

git init
mv .git .gitlab
git init
mv .git .gitproj

然后我修改了/info/exclude文件以排除这些目录并隔离实验室仓库中的实验室目录和proj仓库中的proj目录。

.gitlab /信息/排除

# Ignore git directories
.git*
!.gitignore

# Ignore project directories
Lib/proj
LibTest/proj

.gitproj /信息/排除

# Ignore git directories
.git*
!.gitignore

# Ignore everything under Lib and LibTest
Lib/*
LibTest/*

# Unignore proj directories
!Lib/proj
!LibTest/proj

最后,我在.bashrc文件中添加了别名。使用Git-Bash for Windows,它是/etc/bash.bashrc文件。

alias gitl='git --git-dir=.gitlab'
alias gitp='git --git-dir=.gitproj'

1 个答案:

答案 0 :(得分:0)

通常,当您运行存储库操作时,git会对git进程目录的.git子目录执行查找。因此,将.git目录放在class目录下的任何位置并不适合您。 但是有一种方法可以告诉git在文件系统的任何地方使用自定义.git目录,并通过环境变量GIT_DIR传递它的路径。

所以我会这样做:

  1. 创建项目的根存储库,并将其命名为root
  2. 创建两个存储库,例如root/Projectroot/Lab以及您的来源root/class。到目前为止,有root/Project/.gitroot/Lab/.git,但在.git

  3. 中找不到任何root/class子目录
  4. 为项目存储库文件设置GIT_DIR=<path-to-root>/Project git add <file>。然后提交GIT_DIR=<path-to-root>/Project git commit -m "Initialise Project repo"

  5. 为Labs存储库文件设置GIT_DIR=<path-to-root>/Lab git add <file>并以相同方式提交。

  6. 每次调用git时,总是必须提供正确的GIT_DIR变量。 记住哪个repo文件属于哪个但是你想要的东西有点棘手:)