【发布时间】:2021-11-24 05:54:55
【问题描述】:
我正在使用 git 进行版本控制,这是一个软件项目,它包含一个很大的通用部分以及一些根据特定目标机器而更改的文件:
+project-folder
|-cnc_sources
| |-...(lot of common files)
| |-specialized.cnc
|-plc_sources
| |-...(lot of common files)
| |-specialized.plclib
|-config
| |-specialized.param
由于我支持三种不同类型的机器,我目前的解决方案是一个包含三个不同分支的单一存储库,每台机器一个分支,共享一个很大的公共部分,除了少数专用文件。
我在本地克隆每台机器/分支的 repo(这对于测试和部署软件非常方便),但是这个解决方案不能很好地扩展,因为我必须手动保持所有分支的公共部分的同步复制所有其他工作文件夹中文件的最新版本并在那里提交。
我想知道这种手工工作是否可以避免。我也觉得有些地方不对劲:公共文件在分支之间有不同的历史和变更集,有时我觉得很混乱。
供应商 IDE 需要源代码树中某个位置的文件,因此我无法将公共部分收集到单独的文件夹中(例如创建子存储库)。
我的需要是让 N 个分支共享一组分散在源代码树中的公共文件(无法收集它们),但由于我是一个 git 新手,我不知道关于我的用例的最佳实践,所以我想知道有经验的用户会在我的情况下做什么。
【问题讨论】:
-
在我修改(或删除)我的答案之前,我想了解您如何同步公共部分。能详细解释一下吗?
-
您是指
git branch意义上的“分支”吗?还是作为工作树中的三个并行文件夹? -
@eftshift0 当然,我必须解释得更好(感谢您的耐心等待)。一旦我在一个分支中开发,我必须将所有更改的公共文件移植到其他两个分支中,并在那里提交更改。我这样做有时将文件直接复制到其他分支的工作文件夹中,有时在工作文件夹上使用比较实用程序。我想知道是否有一个聪明的方法来管理这个。
-
@RichardSmith 我的意思是
git branch。我有三个并行文件夹,每个文件夹都指向不同的分支。 -
分支,在 Git 中是无关紧要的。只有提交很重要。提交包含文件(作为快照、la tar 或 zip 存档)。提交还包含元数据,这些元数据形成了一个图(一个 DAG)。这就是 Git 中的全部内容:提交包含文件。分支名称,在它们存在的范围内,只是为了帮助你(和 Git)找到特定的提交。只要仍然可以找到所有提交,您就可以删除所有分支名称而不进行任何更改(这通常需要一些其他名称,例如标签或远程跟踪名称)。
标签: git version-control branch