2013-10-22 32 views
14

我正在寻找有选择地合并零件与git文件。用git有选择地合并文件的*部分*

我有两个分支 - 称它们为主并改变 - 这是一个分开的;如果我把主人合并到变化中,它只会快进。

但是,我只是想在一个文件中包含多个部分 - 从更改为主文件。

有没有一个干净的方法来做到这一点 - 例如git在进行每个更改之前询问?还是我坚持用手做? (世界还未结束,但我不喜欢,而且 - 是 - 这本来是可以避免对我来说更多的计划 - 生活就是这样。)

回答

11

试试这个:

git merge --no-ff --no-commit changed # Merge in 'changed' but don't commit 
git reset <path/to/your/file>   # Reset the stage state but not file 
git add -i <path/to/your/file>   # Start adding in interactive mode 

(Git will prompt you for each hunk; you can split hunks up if necessary.) 

git commit        # Finally commit the merge with only 
             # the bits you chose to stage. 

但是,请注意,这样做会使Git认为该文件已完全合并,因此如果有人要再次合并到同一分支中,则该提交的其他更改仍不会合并。或者可能不是你想要的。

如果您需要git add交互模式中各种选项的含义方面的帮助,请参阅git help add在“交互模式”部分的输出。

+0

尽管我已将“add -p”更改为“add -i”以用于交互模式,但它的工作原理与广告相同。我希望git-merge直接支持与hunk的交互式工作。 – lnmaurer

+0

是的,太糟糕了,你不能在这里使用mergetool。另外,是否有办法一次执行多个文件,还是只需要编写一个循环来实现这一点? – Dan