我有两个分支,
新功能有一个我想要添加到master的提交,但我想控制我要合并多少。
我想选择添加/拒绝每行的更改。类似我可以使用git add -p
我搜索了很多,可能是我在寻找错误的词。这似乎是相当明显的任务。
答案 0 :(得分:3)
将git cherry-pick
与-n|--no-commit
选项一起使用,然后以交互方式选择要提交的内容:
git cherry-pick
...
-n
,--no-commit
通常
git cherry-pick
会自动创建一系列提交。这个 flag应用必要的更改来挑选您的每个命名提交 工作树和索引,不做任何提交。另外,什么时候 使用此选项,您的索引不必与HEAD提交匹配。该 cherry-pick是针对你索引的开始状态完成的。当挑选多个提交时,这非常有用。效果对你的指数 连续。
所以命令序列如下:
git cherry-pick -n <commitid> # merge commitid into the index and working-tree
git reset # clear the index
git add -p # selectively add merged changes to the index
或者,您可以从暂存区域使用git reset -p
删除不受欢迎的黑客:
git cherry-pick -n <commitid> # merge commitid into the index and working-tree
git reset -p # interactively remove from the index changes brought by commitid
答案 1 :(得分:2)
我认为您可以尝试使用补丁文件。
要创建补丁文件:
git checkout master
git diff ..new-features > patch.diff
在文件patch.diff
中,分支主数据和新功能之间存在差异。
现在您可以应用补丁文件,运行:
git apply patch.diff
现在,您可以按任何所需方式管理更改。