合并多个冲突文件时Git有错误吗?

时间:2013-01-29 23:48:52

标签: git

我最近将我的项目从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

我将ezthumb.h和git commit -a修改为存储库。它变得更加麻烦。现在Git相信这两个分支已经成功合并,所以拒绝接受任何进一步的合并命令。实际上还有十多个不同的文件。我花了两个小时才弄清楚如何摆脱错误的合并。我建立了一个小项目,试图在多个文件合并中确认Git的功能。它工作得很好:

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.

结果是我期待的:Git标出了这些文件中的冲突,所以我可以手动合并它们。我觉得Git在两个项目中有不同的行为,这听起来很麻烦。我已经用Google搜索了两个晚上的问题,没有什么相似之处。有没有人知道如何解决这个问题?当然,我可以逐个手动区分和合并文件,但是对于版本控制系统来说它会毫无意义。我的Git在Fedora 14中是1.7.4.4。

2 个答案:

答案 0 :(得分:1)

下次使用git mergetool。这对git的新手来说更友好。

答案 1 :(得分:1)

我没有看到任何错误。没有任何更多细节,我只能猜测除了你的一个文件之外的所有文件都合并了。输出声明git无法自动合并ezthumb.h。这是因为两个分支都对该文件中的同一行(或多行)进行了更改。您需要打开文件并按照合并后的方式进行编辑。然后定期git add,然后git commit