Git结账到前一个分支,什么也不做,但为什么要上演一些东西?

时间:2015-01-13 16:54:25

标签: git

我结账到现有的分行,什么都不做,然后想要结账到另一个现有分行。但它说:

xxx:~/OculusSDK/data$ git checkout AnotherExistingBranch
error: Your local changes to the following files would be overwritten by checkout:
    .DS_Store
    Samples/LibOVR_With_Samples.xcworkspace/xcuserdata/ken.xcuserdatad/UserInterfaceState.xcuserstate
    Samples/LibOVR_With_Samples.xcworkspace/xcuserdata/ken.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
Please, commit your changes or stash them before you can switch branches.
Aborting

然后我做'git status',它说:

    xxx:~/OculusSDK/data$ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.

    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   ../.DS_Store
        modified:   ../Samples/LibOVR_With_Samples.xcworkspace/xcuserdata/ken.xcuserdatad/UserInterfaceState.xcuserstate
        modified:   ../Samples/LibOVR_With_Samples.xcworkspace/xcuserdata/ken.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

no changes added to commit (use "git add" and/or "git commit -a")

为什么呢?谢谢。

2 个答案:

答案 0 :(得分:1)

我认为XCode同时运行。它将重新加载文件并写回磁盘。

.DS_Store是一个Mac OS文件系统信息文件,您将要删除它,另外两个是来自XCode的设置文件。

通常情况下,从一个分支机构退出并切换到另一个分支机构最多会导致合并。

答案 1 :(得分:0)

我怀疑您签出的分支也有不同的.gitignore,但不包含您现在在状态中看到的那些文件类型。在过去的某个地方,您将这些文件添加到您的git存储库中。然后,您将这些文件类型添加到.gitignore,但可能没有从存储库中删除这些文件。然后Git会感到困惑,因为它会看到过去可能已经提交的文件,通过.gitignore删除/忽略,但由于你在另一个分支中使用了不同的.gitignore,现在又回来了。

为了避免这种状态,当我检测到我不应该提交的字段(并且应该被忽略)时,首先我将这些文件复制到一个新目录,然后我将它们从Git(git rm)中删除,然后我修改.gitignore以忽略这些文件类型并提交新的.gitignore。最后,我将这些文件移回原始目录。