我想使用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与同事共享这些项目?
感谢您的时间。
答案 0 :(得分:1)
不确定这会有多大帮助,但这就是Git的工作方式。它通常用于版本化repo目录中的所有文件。因此,如果您的所有文件都在同一个目录中,它们将成为同一个目录的一部分。
分支解决方法很尴尬,并且不会像您所经历的那样很好地扩展。
以下是一些想法:
CUSTOM_MACROS
目录中使用子目录吗?如果这是可能的,那么每个子目录可以有一个repo。这将允许您对单个文件进行版本化,或者将文件分组到子目录中(如果它们属于一起)。CUSTOM_MACROS
目录。无论如何,我的目标是让事情变得尽可能简单。如果将所有东西保存在一个仓库中,那么我会使用它。拉动一切有什么害处吗?下载整个仓库时,您的宏是否太大以至于存储和网络速度都是一个问题?