我正在开发一个 Android 应用程序,并且在整个开发周期中一直在使用 Git。我现在已经到了一个地步,我想构建和发布实验性功能供人们试用和安装,同时仍然在他们的设备上安装原始的、稳定的应用程序。
现在,这意味着我需要使用不同的包名,这会更改开发项目中的一些基本文件。我还希望有一个单独的图标来清楚地区分应用程序。
我对 Git 还不够熟悉,不知道该采取哪种方式:我应该创建一个实验性分支,当我想做一些实验室工作时从中分支出来,还是将这个实验性工作作为一个单独的 git 保留- repo ?
无论哪种方式,我在实际流程中都遇到了一些问题。
- 如果我创建一个实验分支,我不想(错误地?)将包名称的更改和明确分离的实验细节与主分支 merge ;我只想 merge 代码的工作部分,而不需要额外添加的修改。
- 如果我创建一个单独的 repo 协议(protocol),我如何将实验性 repo 协议(protocol)中的更改 merge 到主 repo 协议(protocol)中,同时考虑到同样希望不替换即。包名和图标?
最佳答案
这正是分支的用途。一个限制是 git 真正看到的是提交,而不是文件。因此,您通常会使用 cherry-pick 命令将来自不同分支的一个或几个提交 merge 回 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>
这是首选方法。这意味着您在实验分支中工作时应牢记这一点。您的提交应该足够小,以仅包含修复/功能中涉及的文件。
或者,您可以选择一些文件 merge 回来使用
# from branch master do
git checkout branchx file1 file2 file3
关于android - Git 实验分支还是单独的实验存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9512960/