无法切换分支 - “错误:未跟踪的工作树文件......”我应该添加git吗?

时间:2012-08-31 16:34:25

标签: git

我在 .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)第二: 采取措施再次避免此冲突。

3 个答案:

答案 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 步:恢复已删除的文件。

快乐编码;)