Git在合并多个冲突文件时出现错误?

Git在合并多个冲突文件时出现错误?,git,Git,我最近将我的项目从CVS转移到Git,因为它听起来很流行。然而,当我试图合并主要分支机构时,我非常失望。简单来说,有两个主要分支,master和quickfix。主节点从分支点开始有4次提交;quickfix有15个提交,因此这两个分支加载了不同的代码。所以我决定合并它们,让生活更轻松。检查了我键入的主分支 ezthumb$ git merge quickfix Auto-merging eznotify.c Auto-merging ezthumb.c Auto-merging ezthumb

我最近将我的项目从CVS转移到Git,因为它听起来很流行。然而,当我试图合并主要分支机构时,我非常失望。简单来说,有两个主要分支,master和quickfix。主节点从分支点开始有4次提交;quickfix有15个提交,因此这两个分支加载了不同的代码。所以我决定合并它们,让生活更轻松。检查了我键入的主分支

ezthumb$ git merge quickfix
Auto-merging eznotify.c
Auto-merging ezthumb.c
Auto-merging ezthumb.h
CONFLICT (content): Merge conflict in ezthumb.h
Auto-merging main.c
Automatic merge failed; fix conflicts and then commit the result.
它只合并了一个文件。显然应该有更多,因为

ezthumb$ git status
# On branch master
# Changes to be committed:
#
#   modified:   ChangeLog
#   modified:   Makefile
#   modified:   ezgui.c
#   modified:   eznotify.c
#   modified:   ezthumb.1
#   modified:   ezthumb.c
#   modified:   ezthumb.lsm
#   new file:   ezthumb.pdf
#   modified:   id_lookup.c
#   modified:   libsmm/libsmm.h
#   modified:   libsmm/main.c
#   modified:   libsmm/smm_chdir.c
#   modified:   libsmm/smm_codepage.c
#   modified:   libsmm/smm_cwd_alloc.c
#   modified:   libsmm/smm_cwd_pop.c
#   modified:   libsmm/smm_cwd_push.c
#   modified:   libsmm/smm_filesize.c
#   modified:   libsmm/smm_fstat.c
#   modified:   libsmm/smm_init.c
#   modified:   libsmm/smm_mbstowcs.c
#   modified:   libsmm/smm_pathtrek.c
#   modified:   libsmm/smm_pwuid.c
#   modified:   libsmm/smm_wcstombs.c
#   modified:   main.c
#   modified:   version.c
#
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      ezthumb.h
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   output.map

结果就是我所期待的:Git标记了这些文件中的冲突,以便我可以手动合并它们。Git在两个项目中有不同的行为,这对我来说听起来很麻烦。我在谷歌上搜索了两个晚上,一个也没有。有人知道如何解决这个问题吗?当然,我可以一个接一个地手动区分和合并文件,但对于版本控制系统来说,这样做毫无意义。我的Git在Fedora14中是1.7.4.4。

下次,请使用
Git合并工具。对于git的新手来说,它更友好。

我没有看到任何bug。如果没有更多的细节,我只能猜测,除了一个文件之外,合并在所有文件上都成功了。输出表明git无法自动合并ezthumb.h。这是因为两个分支都对该文件中的同一行(或多行)进行了更改。您需要打开文件并按合并后显示的方式进行编辑。然后执行常规的
git添加
,然后执行
git提交

,那么第一次合并的输出会让您认为git只合并了一个文件吗?合并更新了26个文件。其中5个需要合并。其中1个文件无法自动解析。因为我很确定这些文件中的大多数都不能快速转发。更重要的是,在“假”合并之后,“git diff quickfix”命令仍然显示出巨大的差异,尽管git显示没有任何东西可以合并。这就是为什么我想知道这是否是Git的一个bug。在你的任何输出中,Git都没有说任何东西是不能合并的。在两次合并尝试中,共有4个文件发生冲突。撇开这些冲突不谈,这里似乎没有什么问题。抱歉,如果我不明白…看来你的问题是git太擅长自动合并文件,所以你很困惑它没有提示你合并那些“超过十个其他文件”。或者那些文件从未签入。你能把git log--oneline--name status--graph的相关行粘贴进去吗?
当我输入'pretty sure'时,我脑子里突然想到了什么。我看起来很不一样,看到了很多不同之处。那是在合并之前还是之后?所以我去查看提交的文件,并逐行检查它们。你说得很对,妈。Git确实令人惊讶地围绕thounsand线合并,并且只被一条冲突线击中!我一直在期待数百行的手工作品。事实上,我习惯于在CVS中这样做。事情可以这样做,这使我感到惊讶。非常感谢每一位对您的友好帮助。刚刚尝试了合并工具。问题仍然存在,因为Git只找到一个冲突文件。>ezthumb$git mergetool>merge工具候选项:meld opendiff kdiff3 tkdiff xxdiff>tortoisemerge gvimdiff differ ecmerge p4merge araxis emerge vimdiff Merging:ezthumb.h的正常合并冲突:{local}:修改的{remote}:修改的点击返回开始合并解析工具(meld):meld ezthumb$git mergetool合并工具候选工具:meld opendiff kdiff3 tkdiff xxdiff tortoise gvimdiff differ ecmerge p4合并araxis emerge vimdiff无需文件merging@user2023470在您的评论中很难阅读错误消息。请编辑您的原始问题,以便我们可以继续帮助您。谢谢代码大师。在这个问题上你是对的。请参阅我在MatW上的帖子。现在我对git merge很有信心。
testproj$ git merge quickfix
Auto-merging fixtoken.c
CONFLICT (content): Merge conflict in fixtoken.c
Auto-merging misc.c
CONFLICT (content): Merge conflict in misc.c
Auto-merging rename.c
CONFLICT (content): Merge conflict in rename.c
Automatic merge failed; fix conflicts and then commit the result.