我的.gitignore文件中有以下内容:
/nbproject/
/app/runtime/
/app/runtime/application.log*
/app/runtime/error.log*
/app/config/localdev.php*
.DS_Store
1) 我已经切换到主分支,然后再次切换回开发分支。
2) 当我回到开发分支时,我失去了所有/nbproject/文件和所有/app/config/localdev.php文件!也许还有其他文件,但由于它们是在PHP框架运行时自动生成的,所以我无法确定!
3) 然后我切换回主分支,这些文件在那里。
4) 我将这些文件复制到其他地方,然后再次切换到开发分支。
5) 我将这些缺失的文件放回/nbproject/文件夹中。
现在,如果我尝试切换到主分支,我会得到以下提示:
Error: The following untracked working tree files would be overwritten by checkout:
nbproject/private/config.properties
nbproject/private/private.properties
nbproject/private/private.xml
nbproject/project.properties
nbproject/project.xml
Please move or remove them before you can switch branches.
Aborting
我知道应该执行git add .
来将这些文件移动到代码库中,但我不理解的是:
如果我在执行那些git checkout命令之前就已经忽略了nbproject/目录,为什么git会抛出这个消息?
问题:
关键是要忽略这些文件。无论是在主分支还是开发分支上都是如此。我的问题是:我该如何修复这个问题,以便:
a) 首先:将这些被gitignore的文件恢复到开发分支中?
b) 其次:采取措施避免再次出现这种冲突。
master
分支明显正在跟踪这些文件,而不是忽略它们,而dev
分支正在忽略它们并且不跟踪它们。最好的做法取决于哪种模式是您项目的“正确”模式 - 要么跟踪这些文件,要么忽略它们。在不同的分支上尝试同时执行这两个操作会导致此类问题。 - twalberg