仅合并 git 中选定的更改

Sha*_*arg 5 git git-merge tortoisegit

我提交了一个文本文件并将其推送到主分支。我的同事从主分支中创建了一个单独的分支,并对文件进行了一些更改 - 他对文本进行了修订。更改是在单个提交和单个文件中进行的。

现在,我想将他的一些更改合并到 master 分支中的原始文件中。但!我不想接受一切,只想接受一些改变。

更改是在同一文件的不同行上进行的:修订版中更改了一些行,添加了一些行,删除了一些行。我怎样才能做到这一点?

如果我正确理解 git,将修订分支简单合并到 master 将不会检测到冲突,因为我没有在 master 分支中进行任何更改。此外,合并只会应用分支/提交中所做的所有更改。但是,我只想应用在线(比方说)#20、50、69 所做的更改。我想忽略其他更改,因为我不同意它们。

如何使 git 在所有更改的文件上产生冲突,以便我能够选择是否接受更改?我需要一些互动方式。

例如,在 MS Word 中,可以跟踪更改。然后,每个更改都可以被接受(采用新版本并删除旧版本)或拒绝(保留旧版本并丢弃更改)。然后,更改不再突出显示。

我正在 MS Windows 10 上使用 TortoiseGit 应用程序,在 git 版本 1.9.5.msysgit.1 上运行。因此,如果有一种使用客户端的方法,我会更喜欢它。

Use*_*ess 2

如何使 git ... 使我能够选择是否接受更改?

git merge --no-commit
Run Code Online (Sandbox Code Playgroud)

会这样做 - 文档说:

...执行合并但假装合并失败并且不自动提交,以便用户有机会在提交之前检查并进一步调整合并结果。

这将执行所要求的操作。

然而,它可能不是您想要的。结果将是这样的状态:

  B        <sharg
 / \
A---B'--C' <master
 \     /
  C --/    <coworker
Run Code Online (Sandbox Code Playgroud)

whereC'并不真正包含 中的所有更改C,但是您无法再次合并它,因为您对 git 撒了谎。这可以吗?