Git 具有多产品风味和维度的项目
Git Project with Multi-Product Flavor and Dimension
任何人都可以指导我如何正确地将 git 应用于具有多个产品风格和维度的 Android 项目。
我可以简单地向整个项目添加一个 Git,但这是正确的方法吗?
编辑:
假设我正在构建商店应用程序。
我会有以下配置
风味维度 "client"、"network"
产品口味{
客户1 {
维度 "client"
...
}
client2 {
dimension "client"
...
}
prod {
dimension "network"
...
}
debug {
dimension "network"
...
}
}
结果产品口味将共享相同的 "Code Base"(因为它们都是商店应用程序)但它们还需要有单独的 Iteration/Version releases/features.
我考虑这样做的一种方法(也是我知道的唯一方法)是简单地将 Git 添加到整个项目。为产品口味创建一个分支并从那里继续。唯一的问题是,当我对 "Base Code" 进行一些更改时,我将不得不将其级联到某些(如果不是全部)分支。
我的问题是这样做是否正确。
提前致谢。
您可以使用以下任何选项:
选项1:在同一分支管理所有项目,并为不同的项目版本打标签
假设你在同一个分支管理2个项目,你可以使用标签辅助分别管理不同的项目版本:project1的版本格式A*.*.*
(如A1.0.0
)和版本格式B*.*.*
(例如 B1.0.0
)对于项目 2.
为 HEAD 添加标签:
git tag -a <version> -m 'message'
为历史提交添加标签:
git tag -a <version> -m 'message' <commit>
选项2:在不同的分支管理不同的项目
您可以在不同的分支中管理每个项目,以便您可以分别管理和跟踪不同项目的版本。
如果 "code base" 在一个分支中发生更改,您可以将更改应用到其他分支。
要将文件从一个分支(例如branchA
)应用到另一个分支(例如branchB
),您可以使用以下命令:
git checkout branchB
git checkout branchA -- filename
git commit -m 'apply the changes of the filename from branchA into branchB'
任何人都可以指导我如何正确地将 git 应用于具有多个产品风格和维度的 Android 项目。
我可以简单地向整个项目添加一个 Git,但这是正确的方法吗?
编辑:
假设我正在构建商店应用程序。
我会有以下配置
风味维度 "client"、"network" 产品口味{ 客户1 { 维度 "client" ... }
client2 {
dimension "client"
...
}
prod {
dimension "network"
...
}
debug {
dimension "network"
...
}
}
结果产品口味将共享相同的 "Code Base"(因为它们都是商店应用程序)但它们还需要有单独的 Iteration/Version releases/features.
我考虑这样做的一种方法(也是我知道的唯一方法)是简单地将 Git 添加到整个项目。为产品口味创建一个分支并从那里继续。唯一的问题是,当我对 "Base Code" 进行一些更改时,我将不得不将其级联到某些(如果不是全部)分支。
我的问题是这样做是否正确。
提前致谢。
您可以使用以下任何选项:
选项1:在同一分支管理所有项目,并为不同的项目版本打标签
假设你在同一个分支管理2个项目,你可以使用标签辅助分别管理不同的项目版本:project1的版本格式A*.*.*
(如A1.0.0
)和版本格式B*.*.*
(例如 B1.0.0
)对于项目 2.
为 HEAD 添加标签:
git tag -a <version> -m 'message'
为历史提交添加标签:
git tag -a <version> -m 'message' <commit>
选项2:在不同的分支管理不同的项目
您可以在不同的分支中管理每个项目,以便您可以分别管理和跟踪不同项目的版本。
如果 "code base" 在一个分支中发生更改,您可以将更改应用到其他分支。
要将文件从一个分支(例如branchA
)应用到另一个分支(例如branchB
),您可以使用以下命令:
git checkout branchB
git checkout branchA -- filename
git commit -m 'apply the changes of the filename from branchA into branchB'