Git实验分支还是单独的实验库?

时间:2012-03-01 08:35:49

标签: android git

我正在开发一个Android应用程序,并且在整个开发周期中一直在使用Git。我现在已经开始构建和发布实验性功能供人们试用和安装,同时仍然在他们的设备上安装了原始的,稳定的应用程序。

现在,这意味着我需要使用不同的包名,这会更改开发项目中的一些基本文件。我还希望有一个单独的图标来清楚地区分应用程序。

我不习惯Git足以知道在这里采取哪种方式:我应该创建一个实验性分支,当我想做一些实验室工作时,我会将其分开,或者将这个实验工作作为一个单独的git保留下来-repo?

无论采用哪种方式,我都遇到了一些问题。

  • 如果我做一个实验分支,我不想(错误地?)将包名的变化和明确分开的实验细节与主分支合并;我只想合并代码的工作部分,而无需额外添加修改。
  • 如果我单独制作一个仓库,如何将实验仓库和主仓库的变更合并,考虑到同样的不希望替换ie。包名和图标?

2 个答案:

答案 0 :(得分:4)

这正是分支的用途。一个限制是git真的看到了提交,而不是文件。因此,您通常会使用cherry-pick命令将一个或几个提交从不同的分支合并到master中。

git branch branchx
git checkout branchx
... do work, commit (into branchx), repeat...
git checkout master   # return to master
git log branchx  # to find out the ID of the commit to merge back
git cherry-pick <commit ID from branchx>

这是首选方法。这意味着您在实验分支中工作时应牢记这一点。您的提交应该足够小,只包括修复/功能中涉及的文件。

或者,您可以使用

选择一些要合并的文件
# from branch master do
git checkout branchx file1 file2 file3

见相关答案 How do you merge selective files with git-merge?

答案 1 :(得分:1)

我肯定会去分店。你必须在提交中练习一些纪律,使它们足够小,你可以只挑选你需要的部分并留下其他部分。但我不认为这是一个问题,当然不是在两个独立的存储库之间合并更改。