我在 .gitignore 文件中有这个:
/nbproject/
/app/runtime/
/app/runtime/application.log*
/app/runtime/error.log*
/app/config/localdev.php*
.DS_Store
1) 我有主分支结帐,然后再次结帐,返回 dev分支。
2) 一旦我回到 dev分支,我丢失了所有/ nbproject /文件和所有/app/config/localdev.php! 也许还有其他人,但是因为它们是由php框架uppon运行时自动生成的,所以我真的无法分辨!
3) 然后我切换回主分支,我在那里得到了那些文件。
4) 我已将这些文件复制到其他地方,并且我再次切换到 dev branch 。
5) 我把那些丢失的文件放回/ nbproject /文件夹中。
现在,如果我尝试切换到Master分支,我会得到这个:
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会抛出此消息如果我在发出git checkout命令之前有nbproject / ignore?
问题:
重点是忽略这些文件。无论是主人还是开发者。我的问题是:如何解决这个问题,以便:
a)第一: 将这些文件(gitignore上的文件)恢复为dev?
b)第二: 采取措施再次避免此冲突。
答案 0 :(得分:7)
您可以在其他分支中跟踪它们。或者,您可以将--force
添加到checkout命令,以使用master拥有的文件来删除文件。或者,您可以在签出master之前git clean -xdf
从工作目录中删除文件。
答案 1 :(得分:3)
解决问题的步骤。 积分转至: jszakmeister
1)我已将项目克隆到其他地方。
2)我已经检查了该克隆的主人。
3)将gitignore放入主人,因为它应该从一开始就在那里: git show dev:.gitignore>的.gitignore
4)我已经通过git rm将所有文件从树中删除了“gitignore上的所有文件一个接一个”
5)我已将.gitignore文件添加到回购邮件中。
6)提交
7)切换回原始回购并执行:
8) git fetch / path / to / fix-project master:master
9) git checkout master,我得到了: 切换到分支'主' 您的分支通过1次提交领先于“hub / master”。 这是我的远程主分支。
10)推送到远程主人。
11)再次结帐退出
答案 2 :(得分:0)
如果您遇到如下情况:
您已经在主分支中合并了子分支。然后您尝试在 master 分支中拉取更改。 现在,当您尝试将分支从子分支切换到主分支时,您遇到了上述问题,即“请在切换分支之前移动或删除它们。”
第 1 步:备份所有列出的文件(以防您的操作系统无法进行还原)。
第 2 步:删除导致错误的文件。
第 3 步:切换分支(现在不会抛出错误)
第 4 步:恢复已删除的文件。
快乐编码;)