3

我在分支feature/branch1git status列出文件中的两个.gitignore文件。当我尝试结帐到develop分支时,git 阻止我显示此消息:

error: Your local changes to the following files would be overwritten by checkout:
    XXXXXXX.xcworkspace/xcuserdata/XXXX.xcuserdatad/UserInterfaceState.xcuserstate
Please, commit your changes or stash them before you can switch branches.
Aborting

然后我尝试添加这些文件,尽管它们在.gitignore文件中列出,所以我收到了这条消息:

The following paths are ignored by one of your .gitignore files:
XXXXXXX.xcworkspace
Use -f if you really want to add them.
fatal: no files added

为什么 git 要求我添加这些文件?是不是因为它们在develop分支中没有被忽略。处理这种情况的最佳选择是什么?提前谢谢。

4

1 回答 1

2

问题是您的本地目录中有这些文件,尽管它们不是由 git 版本控制的。并且 git checkout 正在尝试提取这些版本化的文件。Git 告诉您它正在尝试覆盖文件,但它们没有版本控制,因此您有 2 个选择:

  1. 从本地存储库中删除文件并让结帐设置文件。
  2. 通过将忽略的文件添加到 git 存储库来对它们进行版本控制。( git add -f <ignored files>)

要查看 repo 目录中所有被忽略的文件,请运行:

git status --ignored

这将列出所有您忽略的文件,从这里您可以决定是否要在运行之前移动、删除或版本化它们git checkout <branch>

签出此分支后,您可能还需要考虑从您尝试签出的分支传入的忽略文件确实不应该提交到 git 存储库,您可以从存储库中删除文件而不删除它们:

git rm --cached <files>
于 2013-03-13T19:33:16.297 回答