我的团队最近搬到了Git,今天Git第二次在我自己更改并已提交到本地的一行代码上出错,该代码位于我上次编辑的文件上。这是它给我的错误信息:
Cannot pull into a repository with state: MERGING"
org.eclipse.jgit.errors.WrongRepositoryStateException
Cannot pull into a repository with state: MERGING
Cannot pull into a repository with state: MERGING
我无法拉或推到删除服务器。我该如何解决这个问题?
事实上,更好的问题是,我该如何防止这种情况发生?
发生这种情况是因为您正处于合并过程中。通过解决所有冲突并将适当的文件添加到索引来完成合并,或者使用git merge --abort
中止合并。请注意,如果您确实中止了合并,那么在执行git pull
时,您很可能会遇到冲突,因为我认为您之前的pull导致了冲突(这就是为什么您被留在合并中间的原因)。
这就是我解决的方法
1) Right click on project -> Team -> Reset -> [Reset popup will open]
2) By Default Local Repo will be selected -
Reset to: refs/head/master
Reset Type: Mixed (HEAD and index updated)
3) Click on Reset
4) Right click on project -> Team -> Git Pull
5) Right click on project -> Team -> Push to upstream
这里的问题是远程存储库文件已经更改(即其他人已经更改并将文件推送到您在本地副本中更改的存储库),现在您也编辑了相同的文件。因此,当你试图推送文件时,它会抛出一个错误
您必须合并文件,然后提交更改并推送
Right click on your project -> Team ->Merge
当你这样做时,它会要求合并哪个分支。选择分支并继续合并
情况1:若并没有冲突,那个么合并过程就完成了。您现在可以提交并推送
案例2:如果发生冲突,egit将显示错误消息为conflict,并且所有发生冲突的文件都将在项目资源管理器上的文件名上方用红色图标标记
Right click the files with conflict-> Team -> Merge Tool
这将打开比较窗口。检查并合并所需的更改。一旦您完成合并
Right click the files with conflict-> Team -> Add to index
Commit the changes and Push
注意:在此合并过程之前,您必须提交所有暂存文件
并回答您的问题
"实际上,更好的问题是,我该如何防止这种情况发生?"
这不是问题,当多个用户在一个存储库中工作时就会发生这种情况。无论何时,在推送之前,请尝试从远程存储库中提取。当您尝试提取egit时,它会说远程存储库中是否有任何挂起的更改或冲突,然后您解决冲突并推送。
- 我尝试了之前推荐的openshift项目问题:gitmerge--abort
- 我遇到了"无法将状态为merge_resolved的存储库拉入"的问题。通过:git reset--hard解决参见:";无法拉入状态为"merge_resolved"的存储库
- Than made:git pull
- git提交
- 要退出VIM编辑器,我使用了:
<Esc key>:q<Enter key>
6。git-push
成功!
右键单击冲突文件/包并选择添加到索引并提交
拉到一半时,我的Eclipse就死了。后来我就处于这种状态。
为了解决这个问题,我删除了.git文件夹中的index.lock文件。直到那时,我才能够按照其他地方的建议进行git merge --abort
。
我今天在使用eGit时遇到了这种问题。解决方案是,您可以选择冲突的文件,然后恢复提交。然后,您可以解决冲突文件并添加到索引、提交和推送