我结账到现有的分行,什么都不做,然后想要结账到另一个现有分行。但它说:
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")
为什么呢?谢谢。
答案 0 :(得分:1)
我认为XCode同时运行。它将重新加载文件并写回磁盘。
.DS_Store是一个Mac OS文件系统信息文件,您将要删除它,另外两个是来自XCode的设置文件。
通常情况下,从一个分支机构退出并切换到另一个分支机构最多会导致合并。
答案 1 :(得分:0)
我怀疑您签出的分支也有不同的.gitignore
,但不包含您现在在状态中看到的那些文件类型。在过去的某个地方,您将这些文件添加到您的git存储库中。然后,您将这些文件类型添加到.gitignore,但可能没有从存储库中删除这些文件。然后Git会感到困惑,因为它会看到过去可能已经提交的文件,通过.gitignore删除/忽略,但由于你在另一个分支中使用了不同的.gitignore,现在又回来了。
为了避免这种状态,当我检测到我不应该提交的字段(并且应该被忽略)时,首先我将这些文件复制到一个新目录,然后我将它们从Git(git rm
)中删除,然后我修改.gitignore
以忽略这些文件类型并提交新的.gitignore
。最后,我将这些文件移回原始目录。