如何挑选合并提交



我需要挑选一系列提交,我在其中找到了这样的提交:

Merge "TICKET-100: Some commit message" into master
< some other commits >
TICKET-100: Some commit message

我检查了内容,两次提交都是一样的。我可以只挑选第一个,而忽略以"开头的那个吗;合并"?它们是如何关联的?

让我们假设您有这样的东西:

X - master
|
|
M
|
| 
X  B - merged_feature_branch
|  |
|  |
X  A    X - cherry_pick_destination
| /     |
|/      |
X       X
|      /
|     /

现在你有两个选择:

  • 樱桃只摘AB
  • 樱桃采摘M对抗第一个亲本(-m 1(

两种解决方案都将引入相同的更改,但IMHO第一种方法更具可读性。如果在提交M时解决了一些冲突,则可能首选第二个选项。。

如果您必须在没有合并提交的情况下挑选一系列提交,而不是进行

git cherry-pick A..B

您可以将范围放入子命令中,在该子命令中您可以抑制合并提交:

git cherry-pick $(git rev-list --no-merges A..B)

也许您可以在合并之前重新设置提交的基础?试试这样的东西:

git rebase -i HEAD~[commits count]

现在,您必须看到一个包含所选提交的列表。在第一次提交之前(您希望压缩所有其他提交(必须是命令pick

squash—如果您想更改提交消息,fixup—如果不想更改。

在重新调整基础后,您可能只能合并选定的更改。

最新更新