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

she*_*röm 3 git android

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

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

我不习惯Git,不知道该采取哪种方法:我应该创建一个实验分支,当我想做一些实验室工作时该分支从我分支出来,还是应该将此实验工作作为单独的git-repo保留?

无论哪种方式,我的实际流程都存在一些问题。

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

Ber*_*ard 6

那正是分支的目的。一个限制是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>
Run Code Online (Sandbox Code Playgroud)

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

或者,您可以选择一些文件以使用合并

# from branch master do
git checkout branchx file1 file2 file3
Run Code Online (Sandbox Code Playgroud)

看到这个相关的答案 如何将有选择的文件与git-merge合并?