繁体   English   中英

Git与无与伦比的合并

[英]Git merge with beyond compare

我最近购买了超越compare pro来合并与git共享的代码(我对此了解非常有限)。 我现在有两个分支,一个master分支和一个feature分支。 我最近从远程撤回了master ,这样现在master要比masterfeature的共同祖先提前几步。

由于我的分支feature大部分已删除,因此我想将master合并到feature而不是将其合并(这有意义吗?)。 所以我基本上做了

git checkout master
git pull origin master
git push origin master

所以在这一点上,我的feature是在master之后进行一些提交,而在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

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

是。 假设您希望这些文件保留在feature分支中,并且不关心自从最初删除它们以来如何进行更改,可能要选择(d)删除状态。

通常,您的master应始终与遥控器保持同步。 本地更改(例如删除文件)可以在执行feature正确地在feature分支中完成,所以很好。 如果您所做的更改纯粹是本地性的,决不打算成为主项目的永久组成部分,那么它们将永远保留在feature分支中,并且您每次从远程站点获取新更新时,都偶尔会从master合并到feature ,就像您所做的一样。 您想要从feature重新合并到master然后进行push的唯一时间是为每个使用该项目的人进行更改。

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

  • 您是否解决了“超越比较”中提到的所有冲突(在页边空白处标记为“!”)?
  • 中间栏是否看起来像您想要的每一个区别?
  • 是否保存了合并文件?

如果对上述任何一个的回答为“否”,那么您将返回git,并且合并标记仍在文件中,这意味着“我没有完成”。 换句话说,该合并“失败”,这意味着它没有完全成功完成。

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

所有其他文件都给出了失败的合并错误,甚至没有打开beyondcompare mergetool进行合并。

这似乎很奇怪。 通常git将一一继续。 抱歉,我在这里没有更多帮助。

如果要在“超越比较”中查看未解决的冲突,可以运行git mergetool ,它将打开与默认合并工具的冲突。 如果尚未安装,则必须先设置git才能使用Beyond Compare。

有关配置说明,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM