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

lnm*_*rer 19 git git-merge

我希望有选择地合并文件的部分与git.

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

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

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

Amb*_*ber 15

试试这个:

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.
Run Code Online (Sandbox Code Playgroud)

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

如果您需要有关git add交互模式中各种选项含义的帮助,请参阅"交互模式git help add"部分中的输出.