提交更改后无法切换 git 分支



我正在macOS中进行一个Xcode项目。该项目也在git版本控制之下。我有一个git分支,它是我从本地master分支创建的。我在这方面做了一些实质性的工作,并做出了改变。发布git status命令报告:

nothing to commit, working tree clean

我想切换到主分支并将此分支的更改合并到它中。当我切换到主分枝时,我得到如下响应:

error: Your local changes to the following files would be overwritten by checkout:
<List of files>
Please commit your changes or stash them before you switch branches.
Aborting

我很困惑为什么它说文件变了。如果我尝试对其中一个文件进行差异处理,则不会发生任何事情;没有生成输出。从某种意义上说,git似乎至少将其中一些文件视为新文件,尽管它们不是。我试着将所谓的更改文件添加到git提交中,git状态仍然显示

working tree clean

如果我尝试提交,git说

nothing to commit, working tree clean

如果我试着藏一个git,上面写着

No local changes to save

可以做些什么来解决这个问题,并允许我将此分支中的更改合并到主分支中?

当您要切换到的分支(在您的示例master中(具有当前分支没有的更改时,就会发生此错误。

如果您在尝试切换到新分支时看到此错误,那么您当前的分支可能落后于一个或多个提交。如果是,运行:

git fetch

git fetch实际上只从远程存储库下载新数据,但它不会将这些新数据集成到您的工作文件中。Fetch非常适合对远程存储库中发生的所有事情进行全新的查看。由于它的";无害的";大自然,你可以放心:fetch永远不会操纵、破坏或搞砸任何东西。这意味着你永远不会经常去拿。

否则,您的另一个选择是放弃您当前的分支机构更改:

git checkout -f master

我不确定发生了什么。正如我在对我的问题的评论中提到的,我尝试应用skip worktree,并假设git抱怨的所有文件都已更改,并将被分支开关覆盖。我试着做一个分支开关,但它像往常一样失败了。

在那之后,我做了另一个git状态,这次它显示有两个新的文件要提交。其中一个文件是git一直在抱怨的关于分支交换机的一组文件之一。另一份文件以前从未被提及。关于这个状态报告,一个非常令人困惑的事情是,git将这两个文件都列为,但它们在存储库中已经存在了很长一段时间。

我最初取消了这些文件的注释,因为我不明白git为什么认为它们是新的。然后,git状态将它们显示为未跟踪的文件。我再次上演了它们,并执行了一次承诺。这产生了一股令人担忧的输出。有数百行文字写着这样的内容:

delete mode 100644 <some file name>

除了一些

create mode 100644 <some file name>

我担心数据被删除了。我检查了一个已删除的模式文件,它似乎很好

无论如何,在执行了提交之后,git状态表明没有更多的挂起的更改,此时,我实际上能够执行分支切换。因此,问题似乎得到了解决。

另一件令人困惑的事情是,在切换分支后,我尝试使用git-ls命令来检查我之前调整过的任何文件是否仍然具有skip worktree和假设不变,并且没有列出任何文件用于skip worktree或假设不变。

如果有人对这一切有任何解释,那就很高兴听到它

相关内容

  • 没有找到相关文章

最新更新