我正在使用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也拒绝切换分支?
答案 0 :(得分:0)
工作目录只是在没有文件需要提交的意义上是干净的:所有内容都被提交或被忽略。但是,Git仍会通过拒绝执行覆盖未跟踪文件的结帐来保护您免受数据丢失,无论其.gitignore
状态如何。
答案 1 :(得分:0)
因为您确实在a013/app/Model/admin.php
和a013/app/Model/articles.php
中进行了一些更改,这些更改将被您尝试迁移到(开发)的分支所做的更改覆盖。
您可以选择:
git stash
存储您的更改,稍后使用git stash pop
获取这些更改。请注意,我有自己的混淆。git reset HEAD --hard
或git checkout a013/app/Model/admin.php a013/app/Model/articles.php