Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在提交更改后切换git分支_Git_Macos_Git Merge_Git Commit_Git Checkout - Fatal编程技术网

Can';t在提交更改后切换git分支

Can';t在提交更改后切换git分支,git,macos,git-merge,git-commit,git-checkout,Git,Macos,Git Merge,Git Commit,Git Checkout,我正在macOS中从事一个Xcode项目。该项目也受git版本控制。我有一个git分支,它是我在本地主分支的基础上创建的。我在这方面做了一些实质性的工作,并做出了相应的改变。发出git状态命令报告: nothing to commit, working tree clean 我想切换到主分支,并将此分支中的更改合并到主分支中。当我切换到主分支时,我得到如下响应: error: Your local changes to the following files would be overwrit

我正在macOS中从事一个Xcode项目。该项目也受git版本控制。我有一个git分支,它是我在本地主分支的基础上创建的。我在这方面做了一些实质性的工作,并做出了相应的改变。发出
git状态
命令报告:

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
吉特说,如果我试图做出承诺

nothing to commit, working tree clean
如果我想藏一个git,它会说

No local changes to save

如何解决此问题并允许我将此分支的更改合并到主分支?

当您切换到的分支(在您的示例中为
主分支
)具有当前分支没有的更改时,会发生此错误

如果在尝试切换到新分支时看到此错误,则当前分支可能在一个或多个提交之后。如果是,请运行:

git fetch
git fetch
实际上只从远程存储库下载新数据,但它不会将这些新数据集成到您的工作文件中。Fetch对于获取远程存储库中发生的所有事情的新视图非常有用。 由于它的“无害”性质,您可以放心:fetch永远不会操纵、破坏或破坏任何东西。这意味着你永远都不可能经常取回足够多的东西

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

git checkout -f master

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

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

我最初取消了这些文件的分级,因为我不明白git为什么认为它们是新的。然后git状态将它们显示为未跟踪的文件。我再次上演了它们,并执行了一次提交。这产生了令人震惊的大量产出。有几百行这样的话:

delete mode 100644 <some file name>
删除模式100644
还有一些

create mode 100644 <some file name>
创建模式100644
我担心数据被删除了。我检查了一个被删除的模式文件,它看起来很好

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

另一件令人困惑的事情是,在切换分支之后,我尝试使用git ls命令检查我之前调整过的任何文件是否仍然应用了skip worktree和Associate unchanged,并且没有为skip worktree或Associate unchanged列出任何文件


如果有人对这一切有任何解释的话,最好听听。

这是否回答了你的问题?你能不能把你正在运行的所有命令都包括进来,这样你就清楚你在做什么了?我试着对git抱怨的所有文件应用skip worktree和Associated unchanged这两种方法;git仍然抱怨文件有本地更改,这些更改将被覆盖,并且不允许分支切换。我是唯一一个在这个项目上工作的人,所以很难看到当我一直在处理另一个分支时,主分支上会发生新的更改。无论如何,我已经尝试过使用git fetch,但没有任何帮助。
create mode 100644 <some file name>