功能分支1
1
2
3 - this commit changed more than 1000 files
4
5
6 - this commit changed more than 1000 files
7
8
9
10
我正在并行处理另一个功能。直到第10次提交,我才从功能分支1中提取所有代码。
现在,由于第3次提交和第6次提交,执行git merge时有太多冲突。
因此,在合并到feature-branch2时,可以不保留第3和第6次提交吗?
或者有一种方法可以将提交从9选为1,不包括3和6
还是我们可以像[9-7],[5-4],[2-1]一样逐步进行操作
请提出建议
答案 0 :(得分:2)
您可以尝试在合并到目标分支之前,在源分支中删除或还原不需要的提交。为安全起见,您可能想从feature1
创建一个新分支,并使用git revert
撤消不需要的提交:
# from feature 1
git checkout -b feature1_a
git revert 3^..6
git push origin feature1_a
在您要还原的范围内,用较早和较新提交的SHA-1哈希值替换上面的3
和6
。
然后,从feature1_a
向目标分支发出拉取请求。
答案 1 :(得分:0)
首先一个明显的假设:如果您要求删除提交“ 3”和“ 6”,则您知道可以从这些提交中删除修改,而不仅仅是“丢弃它们,因为它们使我烦恼”。>
您可以使用git rebase -i {1}
(用图中的提交1
的哈希替换“ 1”)。
执行此命令将在文本编辑器中打开文件:
pick 2 commit message
pick 3 commit message
pick 4 commit message
pick 5 commit message
pick 6 commit message
pick 7 commit message
pick 8 commit message
pick 9 commit message
pick 10 commit message
# Rebase 31ae65d16..b31f500e4 onto 31ae65d16 (30 commands)
#
# Commands:
# p, pick <commit> = use commit
# ... instructions to edit the history above
在此文件中,删除“ 3”和“ 6”行,然后保存并退出。
结果将是一个分支,其中除了“ 3”和“ 6”之外的所有提交。