由于(据称)未跟踪的文件导致文件覆盖的Git警告

时间:2011-10-03 03:01:39

标签: git

尝试从git repo中提取,但获得以下输出。我认为这些文件是跟踪的(因为它们应该是),但它表明它们不是。他们不在.gitignore。我在分支机构后面约5-10次提交。

git pull --rebase origin master
From github.com:user/Project
 * branch            master     -> FETCH_HEAD
First, rewinding head to replay your work on top of it...
error: The following untracked working tree files would be overwritten by checkout:
mountdoom/protected/models/UserHelper.php
mountdoom/protected/models/UserRegistrationForm.php
mountdoom/protected/runtime/state.bin
mountdoom/protected/views/site/register.php
Please move or remove them before you can switch branches.
Aborting
could not detach HEAD

有任何想法如何解决这个问题?

4 个答案:

答案 0 :(得分:5)

它们会在您检出的版本中进行跟踪,但不会在之前检出过的版本中进行跟踪。如果您不关心未跟踪的版本,只需将其删除即可。

如果您关心它们,请在进行rebase之前提交它们。然后,您可能必须合并作为rebase过程的一部分。

答案 1 :(得分:3)

您可以将未跟踪的文件添加到索引(git add),git stash,然后执行git pull --rebase然后git stash pop并解决冲突(如果有)。

答案 2 :(得分:1)

如果你只是想像我一样删除文件,你可以运行

rm `git merge 2>&1 | sed "s/^[^\t].*/ /g" `

(您可能希望先使用echo而不是rm来运行它来验证结果)

答案 3 :(得分:1)

所以看起来这个问题的一个场景是当一个文件被删除但你仍然有它的副本。出于某种原因,git无法理解它。

这些建议都不适合我。

最后,我可以通过git rm filenamegit commit -m "temporary commit",然后git pull --rebase修复此问题。

此时,git再次抱怨,然后我必须添加要由git add filenamegit commit -m "temporary commit2",然后git pull --rebase跟踪的文件。

然后一切顺利。我没有看到我的临时提交,因为他们互相取消。