将git用于其文件共享公共目录的多个单独项目

时间:2014-12-04 18:55:21

标签: git github

我想使用git对某些文件进行版本控制,但我无法在我的情况下找出最佳实践。让我先设置问题,然后解释我在解决方案上失败的尝试:

我使用名为CodeV的光学设计程序,它是基于命令行的。我用它的编程语言编写自定义宏(CodeV中的“序列文件”)。这些文件用于分析/设计光学系统,因此它们应该可用于CodeV的每个实例。我将所有自定义宏都放在一个目录中。要从CodeV运行它们,我只需在CodeV的命令行中键入run filename.seq,因为我已将CUSTOM_MACROS目录添加到CodeV中的序列文件搜索路径中。容易。

这是一种非常详细的说法,说我在一个目录中有许多可能不相关的文件。

现在,这些文件正在进行中,我想与我的同事一起使用GitHub进行处理。所以,在我的CUSTOM_MACROS目录中,我可能会这样:

macro1.seq
macro2.seq
...
sharedmacro3.seq
sharedmacro4.seq

我想要对每个文件进行单独的版本控制,我认为这意味着在GitHub上单独存储。如何在本地实现Git来实现这一目标?

我尝试在CUSTOM_MACROS中使用一个repo并添加所有文件,然后为每个特定文件使用分支:

git add -A
git commit -am 'Add all of the files'
git checkout -b sharedmacro3

进行一些更改

git commit -am 'Changed some stuff in sharedmacro3.seq'
git checkout master
git merge sharedmacro3

这很好,但是现在如果我想创建一个新宏,我添加该文件,并为该项目创建一个新分支,但它继承了其他文件提交的历史记录。我不想要这种行为,我只想要该文件/项目的提交历史记录。

有什么更好的方法可以解决这个问题?我想要的是什么?

然后,当我想将这个repo添加到GitHub时,它包含了我所有的自定义宏,所以当他只想要sharemacro3时,我的同事会提取所有文件。

我可能遗漏了一些基本的东西,因为我对Git相对较新。如果是这样,请指出我的资源,以便我可以学习。有许多类似的问题,但没有一个看起来与我的特定用例相匹配。

重申一下:如何使用git跟踪文件位于同一目录下的多个项目,然后使用GitHub与同事共享这些项目?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

不确定这会有多大帮助,但这就是Git的工作方式。它通常用于版本化repo目录中的所有文件。因此,如果您的所有文件都在同一个目录中,它们将成为同一个目录的一部分。

分支解决方法很尴尬,并且不会像您所经历的那样很好地扩展。

以下是一些想法:

  • 您可以在CUSTOM_MACROS目录中使用子目录吗?如果这是可能的,那么每个子目录可以有一个repo。这将允许您对单个文件进行版本化,或者将文件分组到子目录中(如果它们属于一起)。
  • 如果子目录不是一个选项,您可以考虑使用多个CUSTOM_MACROS目录。
  • 也许值得探索在一个共同的回购中拥有一般宏集合的想法。你真的需要每个宏文件有一个单独版本的粒度吗?拥有一个所有宏的repo会让事情变得更容易,甚至可能提供一些价值。如果不了解您的文件以及它们在上下文中的相似程度,则很难说清楚。

无论如何,我的目标是让事情变得尽可能简单。如果将所有东西保存在一个仓库中,那么我会使用它。拉动一切有什么害处吗?下载整个仓库时,您的宏是否太大以至于存储和网络速度都是一个问题?