由于未跟踪的文件无法检出分支

时间:2014-02-10 12:52:25

标签: git

我正在使用git来管理我的php项目,我有3个分支master,staging,development。

所以我将我的新功能合并到master分支中,但问题是git拒绝切换回开发分支。

我的.gitignore内容:

config_enviroment.php
.htaccess
.idea
a013/app/tmp/*
smarty/smarty_templates_c/*
config_enviroment.php

现在我在master 当我输入git status时:

nothing to commit, working directory clean

到目前为止似乎没问题。但现在我尝试回到开发分支

git checkout development
error: The following untracked working tree giles would be overwritten by checkout:
    a013/app/Model/admin.php
    a013/app/Model/articles.php
    ....
Please move or remove them before you can swich branches.
Aborting

问题:为什么即使跟踪这些文件并且我的工作目录是干净的,git也拒绝切换分支?

2 个答案:

答案 0 :(得分:0)

工作目录只是在没有文件需要提交的意义上是干净的:所有内容都被提交或被忽略。但是,Git仍会通过拒绝执行覆盖未跟踪文件的结帐来保护您免受数据丢失,无论其.gitignore状态如何。

答案 1 :(得分:0)

因为您确实在a013/app/Model/admin.phpa013/app/Model/articles.php中进行了一些更改,这些更改将被您尝试迁移到(开发)的分支所做的更改覆盖。

您可以选择:

  • 使用git stash存储您的更改,稍后使用git stash pop获取这些更改。请注意,我有自己的混淆。
  • 提交您的更改
  • 使用git reset HEAD --hardgit checkout a013/app/Model/admin.php a013/app/Model/articles.php
  • 放弃您的更改