用git选择性地合并文件的*部分*?

时间:2013-10-22 16:31:44

标签: git git-merge

我希望用git选择性地合并文件的部分

我有两个分支 - 称他们为主人并且改变了 - 这是一个分开的承诺;如果我将master合并为change,它就会快进。

但是,我只想在一个文件中加入一些部分 - 从更改为主。

有没有干净的方法来做到这一点 - 例如git在进行每次更改之前询问?还是我坚持用手工做? (不是世界末日,但我不愿意,而且 - 是的 - 这可以通过我更多的计划来避免 - 这就是生活。)

1 个答案:

答案 0 :(得分:14)

试试这个:

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的输出。