如何使用GIT处理项目的不同部分?

时间:2018-01-18 13:13:42

标签: git github version-control project

我是电子产品设计师,我的项目包括各个部分,如:

  • 硬件设计
  • 软件设计
  • 住房设计
  • 说明
  • 定价

我有一个主项目文件夹,以及单独子文件夹中的每个部分。

现在我正在使用GIT,我为项目的每个方面创建了一个新的仓库。为了我的缘故,我使用GitExtensions / SourceTree来避免键入GIT,并为我的更改历史记录提供可视GUI。 对于每个项目,我有2到7个不同的回购,用于与之相关的每个方面。它认为这不是要走的路,我想在一个“容器”中统一所有内容,同时为每个方面保留不同的历史。

Here建议使用单个回购,并将不同的部分保存在不同的文件夹中。但我认为这将成为一条历史路线。

Here建议为每个部分创建一个repo和孤立分支。但是每次我提交时,我都必须确定我是否在正确的分支上。 他还建议使用不同的repos并推送到同一个遥控器,但这需要为每个repo打开不同的GIT GUI实例。

我对GIT很新,所以我的结论可能不对。

我想为项目创建一个开放的GUI,所有具有“并行”历史的部分,如果我在HW上进行更改,当我进行提交时,它将在HW历史记录行中完成,或者如果我进行SW更改,则可以将其提交给SW历史记录行。所有这一切都没有检查分支的麻烦,或者有多个GUI实例。

这种可能吗?

谢谢!

PD:也许有更好的方法来组织项目。我也想听听其他解决方案。

2 个答案:

答案 0 :(得分:0)

只需将您的所有文件提交到单个仓库(全新的仓库或将所有文件添加到现有仓库中)。

您可以轻松查看单个子目录的历史记录:

git log THE_DIR

或者显示更改,而不仅仅是提交消息:

git log -p THE_DIR

答案 1 :(得分:0)

您可以使用孤立分支和子模块进行操作。这有点复杂,所以你可能想要真正检查你对每个部分有不同历史记录是否重要的​​假设。但是如果你想设置它,你可以这样做:

git init
git checkout --orphan master-a
# ... commands to set up the content for project part A in your working tree
git add .
git commit -m "init part A"
git checkout --orphan master-b
# ... commands to set up the content for project part B in your working tree
git add .
git commit -m "init part B"
git checkout --orphan master
rm -rf *
git submodule add -b master-a --name part-a -- ./ a-directory
git submodule add -b master-b --name part-b -- ./ b-directory
但是,我不能说任何给定的UI工具与子模块交互的无缝性。但这确实为每个部分提供了独立的历史记录,同时将所有内容存储在一个仓库中,但是默认分支构建了整个项目的工作树。