功能分支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中的所有代码。
现在,由于第三次和第六次提交,在做git合并时有很多冲突。
那么,有没有可能在合并到feature-branch2时将第3次和第6次提交保持不变
或者,是否有一种方法可以从9到1中挑选出3和6之外的提交
或者我们可以像9-7,5-4,2-1那样一步一步地做吗?
请给出建议
发布于 2019-06-11 14:10:00
在合并到目标分支之前,您可以尝试删除或恢复源分支中不需要的提交。作为安全预防措施,您可能希望从feature1
创建一个新分支,并使用git revert
撤消不需要的提交:
# from feature 1
git checkout -b feature1_a
git revert 3^..6
git push origin feature1_a
将上面的3
和6
替换为您要恢复的范围内的旧的和新的提交的SHA-1散列。
然后,从feature1_a
向目标分支发出拉取请求。
发布于 2019-06-11 15:17:21
首先是一个明显的问题:如果你要求删除提交"3“和"6",你知道你可以丢弃这些提交中的修改--而不仅仅是”丢弃它们,因为它们让我讨厌“。
您可以使用git rebase -i {1}
(在您的图中,将"1“替换为commit 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”之外的所有提交。
https://stackoverflow.com/questions/56537418
复制相似问题