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

标签 android git

我正在开发一个 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

查看相关回答 How do you merge selective files with git-merge?

关于android - Git 实验分支还是单独的实验存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9512960/

相关文章:

android - 为什么 Android Studio 找不到某些资源

远程分支的暂存或未暂存更改之间的 Git diff

python - pip install -e 开发环境的本地git分支

java - ListView getFirstVisiblePosition

android - 带有计时器的服务调用另一个服务

Android Room Persistence Library Proguard 配置

android - 使多个值相等的最佳算法性能

git - 为什么 "git push"使用 MySysGit 1.7.4 会无限期地卡在那里?

GIT - 克隆时出现 'early eof' 错误

git - 版本控制 : Managing Common Component Source