正如标题所述,我试图从我和朋友之间共享的git存储库中提取并且我可以提交,他可以提交,但是无论何时我们中的任何一个人试图拉它带来了失败:DIRTY_WORKTREE
我们俩对git都非常陌生,对如何解决这个问题没有任何指导。
答案 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 是由以下顺序引起的:
在这种情况下,Eclipse认为您的工作树很脏。的确,当两个文件集之一忽略某些文件而另一个文件集忽略时,比较两个文件集并不明显。
要在Eclipse中解决问题,我做了以下事情:
答案 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,这个问题就消失了。