Eclipse / Git - 拉失败的脏工作树

时间:2014-05-12 01:12:29

标签: eclipse git ide

正如标题所述,我试图从我和朋友之间共享的git存储库中提取并且我可以提交,他可以提交,但是无论何时我们中的任何一个人试图拉它带来了失败:DIRTY_WORKTREE

我们俩对git都非常陌生,对如何解决这个问题没有任何指导。

14 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:10)

另一种方法,如果你没有进行任何工作,就是尝试重置 - 坚持你的头脑。

使用EGit:Resetting your current HEAD

  

在项目中选择Team -> Reset...。这将打开一个对话框,您可以在其中选择分支或标记。

重置当前分支上的HEAD,以便将索引工作树重置为上次分支的最后一次提交。

然后尝试拉。

答案 2 :(得分:8)

我有未提交的更改。在我提交它们然后合并之后,肮脏的工作树问题就消失了。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

这似乎意味着您现在使用的版本具有尚未提交的编辑。所以你要么必须删除这些编辑,要么提交它们。请注意,如果您提交它们,则可能会发生合并冲突。

答案 5 :(得分:0)

在eclipse中,我进入了团队同步视图,然后右键单击我的项目并点击“覆盖”以覆盖所有本地更改。然后重试您的合并。

答案 6 :(得分:0)

只有添加另一个案例,我有DIRTY_WORKTREE,我是唯一一个提交给我的Github项目的人,所以在EGit中我做了一个Push分支...“如果存在并强制覆盖远程分支分歧“

危险:如果其他人正在处理同一个项目,此操作将删除他们的提交,因为分歧。

答案 7 :(得分:0)

我在Eclipse上遇到了类似的问题,因为ununiform的uncomiform变化。 提交后我可以合并,一切都恢复原样。 查看您的源代码并检查所有更改。如果没有,你可以很难重置。

答案 8 :(得分:0)

删除受影响的文件,然后尝试再次拉出。之后,将您的更改推送到git。我遇到了同样的问题,这对我有用。

答案 9 :(得分:0)

就我而言, DIRTY_WORKTREE 是由以下顺序引起的:

  1. 在提交中,我还提交了一些我应该忽略的文件
  2. 在下一次提交中,我修改了.gitignore ,忽略了上述文件
  3. 尝试在我对.gitignore的更改丢失的另一个分支之上重新设置

在这种情况下,Eclipse认为您的工作树很脏。的确,当两个文件集之一忽略某些文件而另一个文件集忽略时,比较两个文件集并不明显。

要在Eclipse中解决问题,我做了以下事情:

  • 修改.gitignore,使其与我要基于的分支相同。
  • 愉快地开始重新合并或重新合并。

答案 10 :(得分:0)

如果您所做的更改未提交,则eclipse会建议您尝试进行更改。要解决此问题,您可以放弃所做的更改或提交这些文件。

来源:https://www.eclipse.org/forums/index.php?t=msg&th=890477&goto=1565668&#msg_1565668

答案 11 :(得分:0)

如果要覆盖本地分支到原始分支。

转到Git回购视图>单击原始主机>选择重置->它将显示当前HEAD并重置为分支。 如果您想完全覆盖本地更改,请选择“硬重置”

答案 12 :(得分:0)

当您对尚未提交的文件进行本地更改时,会发生此错误。用git的话来说,您对工作树的更改尚未提交。

在这种情况下,当您尝试拉时,git不确定如何处理本地更改。它应该丢弃这些内容并从远程提取更改吗?是否应该在之前提交那些从远程提取更改的内容?这就是为什么它会失败。

为避免此问题,您必须先提交,存储或放弃本地更改,然后再将更改拉入本地存储库。一旦您的工作树中没有待处理的本地更改,您就应该能够毫无错误地进行提取。

答案 13 :(得分:-2)

我认为这个问题是由EGit版本引起的。 当我使用带有EGit 2.6的Spring Tools Suite时,我也遇到了同样的问题。

EGit包含在STS默认包中,因此EGit升级非常困难。

目前我正在使用带有EGit 3.7的eclipse WTP,这个问题就消失了。