0

我刚开始学习 git 版本控制,我正面临这个问题。给定以下分支结构(取自免费书籍):

分支结构

假设 C4/C5 提交更改了index.html文件的同一部分。

git checkout master
git merge iss53

如果我理解正确,我需要手动解决冲突。这本书说了一些关于冲突文件的内容。这个冲突文件在哪里?以及如何,鉴于以下冲突:

<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
  please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

我可以放弃 HEAD 的所有更改,仅将“iss53”分支的更改合并到“master”吗?如何编辑这些行?

4

2 回答 2

5

冲突的行将在有冲突的文件中。因此,如果您的 index.html 文件有冲突,您可以在文本编辑器中打开它以获取上面的视图。

您需要删除不需要的行(和/或进行更改),然后保存文件。然后git add index.htmlgit merge --continue

或者,考虑使用git mergetool http://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html

于 2013-01-06T02:09:50.913 回答
3

这本书说了一些关于冲突文件的内容。这个冲突文件在哪里?

没有“冲突文件”,只有文件,如果合并的父级都对无法自动合并的文件进行了更改,则它们可能会发生冲突。在这种情况下,您需要通过编辑文件或(见下文)通过检出文件的两个父版本之一来手动解决冲突。

以及如何...我可以丢弃 HEAD 中的所有更改,仅将“iss53”分支中的更改合并到“master”中?

在合并期间,您可以使用git checkout --theirs index.html丢弃更改并使用正在合并的版本。这样做之后,文件仍将被标记为冲突,您必须将git add index.html冲突标记为已解决。

于 2013-01-06T02:18:14.757 回答