首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >合并到git中的另一个分支时,仅选择提交范围

合并到git中的另一个分支时,仅选择提交范围
EN

Stack Overflow用户
提问于 2019-06-11 14:04:30
回答 2查看 29关注 0票数 0

功能分支1

代码语言:javascript
运行
复制
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那样一步一步地做吗?

请给出建议

EN

回答 2

Stack Overflow用户

发布于 2019-06-11 14:10:00

在合并到目标分支之前,您可以尝试删除或恢复源分支中不需要的提交。作为安全预防措施,您可能希望从feature1创建一个新分支,并使用git revert撤消不需要的提交:

代码语言:javascript
运行
复制
# from feature 1
git checkout -b feature1_a
git revert 3^..6
git push origin feature1_a

将上面的36替换为您要恢复的范围内的旧的和新的提交的SHA-1散列。

然后,从feature1_a向目标分支发出拉取请求。

票数 2
EN

Stack Overflow用户

发布于 2019-06-11 15:17:21

首先是一个明显的问题:如果你要求删除提交"3“和"6",你知道你可以丢弃这些提交中的修改--而不仅仅是”丢弃它们,因为它们让我讨厌“。

您可以使用git rebase -i {1} (在您的图中,将"1“替换为commit 1的散列)。

执行此命令将在文本编辑器中打开一个文件:

代码语言:javascript
运行
复制
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”之外的所有提交。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56537418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档