我正在开发一个android应用程序,并且在整个开发周期中都在使用git。我现在已经到了一个地步,我想建立和发布实验性的功能,供人们试用和安装,同时在他们的设备上仍然安装原始的、稳定的应用程序。
现在,这意味着我需要使用一个不同的包名,这将更改开发项目中的一些基本文件。我也想有一个单独的图标,以明确区分应用程序。
我还不习惯git,不知道应该采取什么样的方式:我应该创建一个实验分支,当我想做一些实验室工作时将其分支出来,还是将这个实验工作作为一个单独的git回购?
我对两种方式的实际流程都有一些问题。
如果我做一个实验分支,我不想(错误地?)将包名称的更改和明显分离的实验细节与主分支合并;我只想合并代码的工作部分,而不需要额外的修改。
如果我做一个单独的回购,我如何合并从实验回购到主回购的变化,考虑到同样的愿望,不取代即包名称和图标?

最佳答案

那正是树枝的用途。一个限制是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?

08-18 00:49