可能重复:
Trouble merging with Git
我下载了一个git repo做了一些更改(删除了一些文件),然后提交了它。然后我做了git checkout -b“new branch”。在这里,我没有删除文件,但我确实做了一些更改并提交了它。现在我回到我的主分支并试图做一个git merge new_branch_i_created但是说:
fatal: 'merge' is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>' as
appropriate to mark resolution and make a commit, or use 'git commit -a'.
我做错了什么?
如果我尝试从我的主分支机构结账到新分支,它会说:
GDCatalog/.classpath: needs merge
GDCatalog/src/com/cyrilmottier/android/gdcatalog/CatalogActivity.java: needs merge
GDCatalog/src/com/cyrilmottier/android/gdcatalog/PagedViewActivity.java: needs merge
GreenDroid-GoogleAPIs/.classpath: needs merge
GreenDroid/.classpath: needs merge
GreenDroid/src/greendroid/widget/PagedView.java: needs merge
error: you need to resolve your current index first
答案 0 :(得分:2)
来自git的错误消息说明了一切。在提交合并提交之前,您需要解析两个分支之间的未合并更改。发生这些合并冲突是因为文件已在两个分支中进行了修改。
要解决此问题,您需要编辑冲突的文件。对于每个文件,您必须解决合并。冲突将被<<<<<<<<<<<
,===========
和>>>>>>>>>>
标记包围。您如何解决它们取决于更改(您可能希望保留更改,远程分支中的更改或两者的组合)。
解决所有冲突后,您必须为每个文件执行git add
。然后git commit
。预填充的提交消息将指示这是合并提交,并且已解决一些冲突。您可能不必编辑它,除非您的编码样式要求您提交消息的某些特定格式。
总而言之,你必须这样做:
$ emacs GDCatalog/.classpath
... resolve conflict ...
$ git add GDCatalog/.classpath
... do the same for all other files ...
$ git commit