Eclipse/Git - 拉取失败,工作树不干净

35

正如标题所述,我正在尝试从我们之间共享的git存储库中拉取代码,我可以提交,他也可以提交,但每当我们中的任何一个尝试拉取时,都会显示拉取失败:DIRTY_WORKTREE。

我们俩都非常新手,对如何解决这个问题毫无头绪。


我遇到了同样的问题,当我尝试拉取时失败并显示消息“DIRTY_WORKTREE login”。 - Dev
3
你能删除那些在消息中提到的额外文件吗?(就像我在 https://dev59.com/u2Up5IYBdhLWcg3wJlAH#15476133 中所说的那样) - VonC
嘿@VonC,我按照您在上面链接中提到的步骤进行了操作,但并没有帮助我。请看一下我的问题...链接:http://stackoverflow.com/questions/23602895/best-practice-for-using-egit-with-an-app-engine-connected-android-project-in-ecl - Dev
14个回答

15

我能够通过使用git命令行客户端来解决类似的问题。虽然eclipse(egit)只显示DIRTY_WORKTREE,但是在命令行中,我看到了多个冲突文件。在命令行中使用git merge master,我可以轻松地解决冲突,然后在eclipse中进行操作。所以对我来说,这似乎是一个egit问题。


14
另一个方法是,如果你没有任何正在进行的工作,请尝试重置--hard你的HEAD。
使用EGit:重置当前HEAD
选择项目上的“Team -> 重置...”,这将打开一个对话框,您可以在其中选择一个分支或标签。
重置当前分支的HEAD,以便将索引和工作树重置为该分支的最后一次提交。
然后尝试拉取。

如果其他人遇到了类似的问题 - 我在Eclipse中也遇到了这个错误,但是在SourceTree中没有。文件已通过SourceTree推送,但在尝试在Eclipse中拉取相同未修改的文件时,我遇到了相同的错误。我尝试了 > team -> reset (感谢VonC) ,然后一切恢复正常! - JGlass
1
在我的情况下,我既不能提交我的更改,也不能从存储库拉取更改。作为预防措施,首先我备份了我对项目所做的所有更改。然后,我执行“右键单击”>“团队”>“重置...”>选择“远程跟踪”中的项目>选择“重置类型”硬重置>“重置”。之后,我需要从备份中获取我的更改,并最终提交它们。 - predrags
@predrags 有趣:不要犹豫,编辑答案并添加您的解决方案。 - VonC
@VonC 感谢您的建议,但我不认为这是一个解决方案,它更像是您解决方案的扩展或特殊情况。 - predrags

11

我有未提交的更改。在提交后进行合并,脏工作树问题就消失了。


1

只需删除项目文件夹中的.gitignore文件,然后合并。 合并会显示冲突,您需要解决冲突,然后推送更改。


1
这个错误发生在你对文件进行了本地更改但尚未提交时。用git的话来说,你的工作树中有未提交的更改。
当你处于这种情况并尝试拉取时,git不确定如何处理你所做的本地更改。它应该放弃这些更改并从远程获取更改吗?它应该在从远程获取更改之前提交这些更改吗?这就是为什么会失败的原因。
为了避免这个问题,在将更改拉入本地存储库之前,你需要提交、存储或放弃本地更改。一旦你的工作树中没有挂起的本地更改,你就可以无错误地拉取。

1

看起来是指您目前使用的版本有尚未提交的编辑。因此,您必须删除这些编辑或将其提交。请注意,如果您提交它们,可能会出现合并冲突。


0

只是补充一下,我遇到了 DIRTY_WORKTREE 的情况,我是 Github 项目中唯一提交代码的人,所以在 EGit 中我执行了“强制覆盖远程分支(如果存在且已经分叉)”的操作。

注意:如果其他人正在同一个项目上工作,此操作将删除他们的提交记录。


0

删除受影响的文件,然后再尝试拉取。之后将您的更改推送到Git。我也遇到了同样的问题,这个方法对我有效。


0
在我的情况下,DIRTY_WORKTREE 是由以下步骤引起的:
  1. 在提交中,我提交了一些本应该忽略的文件
  2. 在下一个提交中,我修改了 .gitignore以忽略上述文件
  3. 尝试在另一个分支上进行变基,其中我的对 .gitignore 的更改丢失了
在这种情况下,Eclipse 认为您的工作树是脏的。实际上,比较两个文件集时,其中一个文件集忽略了某些文件,而另一个文件集没有忽略并不明显。
为了在 Eclipse 中解决问题,我执行了以下操作:
  • 修改 .gitignore,使其与我想要变基的分支中的 .gitignore 相同
  • 愉快地开始变基或合并变基。

0

我在Eclipse上遇到了类似的问题,因为有未提交的不一致更改。 提交后,我可以合并,一切都恢复正常了。 查看您的源代码并检查任何更改。如果没有更改,您可以进行硬重置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接