2010-01-08 59 views
11

"Cannot rewrite branch(es) with a dirty working directory".git的错误

我是新来的Git“不能用脏的工作目录重写分支(ES)”。

这个错误是什么意思?我应该做什么?

+0

这是我第一次混帐回购协议,我犯了一些不属于......不得不纠正它。 – jldupont 2010-01-08 20:52:27

+0

我遇到同样的问题,并且我对git有经验。如果我做'git filter-branch --subdirectory-filter somedir - --all',我最终会处理完整个repo,但是如果我做了'git filter-branch --tree-filter'rm somefile' - 在处理具有上述错误的第一个分支之后,它全部退出。为什么'filter-branch'保存'--subdirectory-filter'的状态,但是如果'--tree-filter'改变目录,停止? – 2011-10-12 19:24:05

回答

19

肮脏的工作目录意味着您有未提交的分支更改。你可以提交或隐藏它们。藏匿只需使用:

git stash 

,并以此来把你变回

git stash apply 
+0

帮助...谢谢! – jldupont 2010-01-08 20:31:36

+3

请注意,您实际上可能没有一个肮脏的工作目录:在1.7.7.1之前的git中存在一个bug,这意味着运行'filter-branch'时git不会刷新其内部索引。因此,无论如何请尝试运行这两个命令 - 除非有人知道强制索引刷新的方式不太方便。 (关于[这个问题]的更多讨论](http://stackoverflow.com/questions/6463963/git-filter-branch-says-working-tree-is-dirty-when-it-is-not)。) – 2012-05-16 11:04:31

+2

从上面链接添加的注释:'git update-index -q --ignore-submodules --refresh'应该更新索引! – 2012-05-16 15:17:14