我需要挑选一系列提交,我在其中找到了这样的提交:
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
| /
| /
现在你有两个选择:
- 樱桃只摘
A
和B
- 樱桃采摘
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
—如果不想更改。
在重新调整基础后,您可能只能合并选定的更改。