0

我正在处理本地化,这是一个迭代 40 多个分支的过程,每个分支实现大约 40 次提交。其中一些(假设是一半)对于几乎所有分支都完全相同。因此,我开始将提交 ID(如 085cfefc9291b)复制到记事本中,然后在我希望在当前分支上实施这些更改时从该列表中挑选。

我的提交列表 cherry-pick(例如git cherry-pick 290d953c2837):

  • 290d953c2837 --> 产品矩阵更新 (2017-02),
  • 9ee8c001165e6 --> 结果和收益的 Jsonify (2017-02)
  • 13156cee10d --> 实现产品系列的双后端/前端
  • 80c98c492 --> 切换后端过滤
  • 15106bdc --> 在包中包含椭圆形 (fusion2)
  • 085cfefc9291b --> 从前端排除产品范围

这些提交来自同一存储库的不同分支。

真正适合我的工作流程的东西是一种将这些提交捆绑/压缩到一个提交中的方法。这将使我能够在此过程中动态创建补丁,如果我保留一长串单独的提交,我可以轻松创建不同版本的补丁,其中一些提交更多,一些提交更少。

您对此了解哪些最佳实践?

4

1 回答 1

0
  1. 从正确的提交创建一个分支。
  2. 将提交的子集应用到该分支上。
  3. 将这些更改压缩到一个提交中。

假设您有一组提交{A,B,C,D,E,F,G}和一个基本提交Z。压扁的过程A B C F如下:

#create a branch patch1 from Z
git checkout -b patch1 Z
#apply A B C F
git cherry-pick A B C F
#squash them into one commit
git reset Z --soft
git commit -m 'squash A B C F'
#create a patch of the new commit if necessary
git format-patch -1

这只是创建这种组合提交的可能方法之一。决定哪个提交可能是正确的基础有点困难。

另一种方法:

#create a branch patch1 from G
git branch patch1 G
#rebase and squash A B C F onto Z
git rebase -i --onto Z A^..patch1
#in the editor
  pick A
  squash B
  squash C
  squash F
#create a patch of the new commit if necessary
git format-patch -1
于 2018-02-07T17:59:05.960 回答