Git合并超越比较

时间:2017-07-10 15:00:00

标签: git github merge beyondcompare beyondcompare4

我最近购买了超越比较专业合并与git共享的代码(其中我的理解非常有限)。 我现在有两个分支,masterfeature。我最近从远程提取了master,现在mastermasterfeature之间的共同祖先之前提交了一些提交。

由于我的分支feature主要是删除,我想将master合并到feature而不是反过来(这有意义吗?)。所以我基本上做了

git checkout master
git pull origin master
git push origin master

所以在这一点上,我feature提交了一些提交,并在master之前提交了一些提交。要将master的提交合并到feature我做了:

git checkout feature
git merge master
git mergetool

现在我收到了一系列消息,如

Deleted merge conflict for 'ED/build/make/rules.mk':
  {local}: deleted
  {remote}: modified file
Use (m)odified or (d)eleted file, or (a)bort? m

Normal merge conflict for 'ED/src/driver/ed_model.F90':
  {local}: modified file
  {remote}: modified file
merge of ED/src/driver/ed_model.F90 failed
Continue merging other unresolved paths [y/n]? y

所有其他文件都提供了一个失败的合并错误,甚至没有打开beyondcompare mergetool来进行合并。

  • 第一个提示是(m)odified or (d)eleted,这是否意味着我必须选择在本地和远程之间选择哪个文件进行合并?
  • 第二个提示告诉我合并失败了,为什么会这样?

修改

我的.gitconfig的相关部分是

[diff]
    tool = bc3
[difftool]
        prompt = false
[difftool "bc3"]
    trustExitCode = true
[core]
    fileMode = false
    symlink = false
    ignorecase = true
[merge]
    tool = bc3
[mergetool "bc3"]
    trustExitCode = true
[alias]
    difftool = difftool --dir-dif --no-symlinks

2 个答案:

答案 0 :(得分:3)

  

第一个提示说(m)odified或(d)eleted,这是否意味着我必须选择在本地和远程之间选择哪个文件作为合并的结果?

是。您可能希望选择(d)eleted状态,假设您希望这些文件在feature分支中保持删除状态,并且不关心自最初删除它们之后它们的更改方式。

通常,您的master应始终与遥控器同步。删除文件等本地更改可以在feature分支中正确完成,这样做很好。如果您的更改完全是本地的,从不打算成为主项目的永久部分,那么它们将永远留在feature分支中,并且每当您偶尔从master合并到feature时从您正在做的事情中,从遥控器中提取新的更新。您希望从feature合并回master然后push的唯一时间是为使用该项目的所有人更改内容。

  

第二个提示告诉我合并失败了,为什么会这样?

  • 您是否解决了Beyond Compare中发出的所有冲突(在边距中标有“!”)?
  • 你的中间栏是否看起来像你想要的每一个差异?
  • 您是否保存了合并文件?

如果对这些中的任何一个的答案是“否”,那么你返回到git,合并标记仍在文件中,这意味着“我没有完成”。换句话说,合并“失败”,意味着它没有完全成功完成。

我不担心文件地址看错了。当git尝试解析合并时,它会将三个不同的版本(远程,本地,合并)复制到三个临时文件中。完成编辑和合并后,它会将“合并后的”复制回本地文件。

  

所有其他文件都提供了一个失败的合并错误,甚至没有打开beyondcompare mergetool来进行合并。

这看起来很奇怪。通常git将一个接一个地继续。对不起,我在这里无法提供更多帮助。

答案 1 :(得分:1)

如果您想在Beyond Compare中看到未解决的冲突,您可以运行git mergetool,这将与您的默认合并工具发生冲突。如果你还没有,你必须先设置git才能使用Beyond Compare。

配置找到here

的说明