我可以从另一个分支添加更改到暂存区域吗?

时间:2016-07-04 06:27:54

标签: git shell version-control dvcs

我有两个分支,

  • 新的功能

新功能有一个我想要添加到master的提交,但我想控制我要合并多少。

我想选择添加/拒绝每行的更改。类似我可以使用git add -p

我搜索了很多,可能是我在寻找错误的词。这似乎是相当明显的任务。

2 个答案:

答案 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

现在,您可以按任何所需方式管理更改。