我最近购买了超越比较专业合并与git
共享的代码(其中我的理解非常有限)。
我现在有两个分支,master
和feature
。我最近从远程提取了master
,现在master
在master
和feature
之间的共同祖先之前提交了一些提交。
由于我的分支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
答案 0 :(得分:3)
第一个提示说(m)odified或(d)eleted,这是否意味着我必须选择在本地和远程之间选择哪个文件作为合并的结果?
是。您可能希望选择(d)eleted状态,假设您希望这些文件在feature
分支中保持删除状态,并且不关心自最初删除它们之后它们的更改方式。
通常,您的master
应始终与遥控器同步。删除文件等本地更改可以在feature
分支中正确完成,这样做很好。如果您的更改完全是本地的,从不打算成为主项目的永久部分,那么它们将永远留在feature
分支中,并且每当您偶尔从master
合并到feature
时从您正在做的事情中,从遥控器中提取新的更新。您希望从feature
合并回master
然后push
的唯一时间是为使用该项目的所有人更改内容。
第二个提示告诉我合并失败了,为什么会这样?
如果对这些中的任何一个的答案是“否”,那么你返回到git,合并标记仍在文件中,这意味着“我没有完成”。换句话说,合并“失败”,意味着它没有完全成功完成。
我不担心文件地址看错了。当git尝试解析合并时,它会将三个不同的版本(远程,本地,合并)复制到三个临时文件中。完成编辑和合并后,它会将“合并后的”复制回本地文件。
所有其他文件都提供了一个失败的合并错误,甚至没有打开beyondcompare mergetool来进行合并。
这看起来很奇怪。通常git将一个接一个地继续。对不起,我在这里无法提供更多帮助。
答案 1 :(得分:1)
如果您想在Beyond Compare中看到未解决的冲突,您可以运行git mergetool
,这将与您的默认合并工具发生冲突。如果你还没有,你必须先设置git才能使用Beyond Compare。
配置找到here。
的说明