git 无法 checkout 主分支

gzszwxb4  于 2022-12-17  发布在  Git
关注(0)|答案(4)|浏览(462)

我一直在一个分支中使用一些代码来改进应用程序。现在它已经完成,我想将此分支与master分支合并,但我不能。我首先尝试 checkout 到master分支,如下所示:

$ git checkout master

但我得到了这个错误:

error: The following untracked working tree files would be overwritten by checkout:
vendor/bin/doctrine
vendor/bin/doctrine.php
...

但是vendor目录包含在.gitignore文件中。如果我执行:

$ git status

我收到这条信息:

# On branch mejoras_contralador
nothing to commit (working directory clean)

在此之后,我会:

$ git merge branch

如何避免这种错误?

wqlqzqxt

wqlqzqxt1#

因此,这里的问题是,在当前分支(我们称之为current)上,vendor目录位于.gitignore中,不是repo的一部分。
但是,它是在您的master分支中提交的,因此,您的master分支将抛出错误The following untracked working tree files would be overwritten by checkout
解决办法很简单。
1)在分支current中,将vendor目录重命名为其他目录(例如vendor.temp,可以使用mv vendor vendor.temp
2)现在执行一个git checkout master,这一次不会抛出任何冲突,因为在您试图 checkout 的分支上已经没有公共的供应商目录。
3)现在在你的master分支上运行一个git rm -r --cached vendor,这将从你的master分支中删除供应商目录。
4)更新master分支中的.gitignore文件以开始忽略vendor目录。
5)确定您需要哪个供应商目录,是分支master中的vendor目录,还是分支current中的vendor目录,并相应地重命名/删除文件。

ahy6op9u

ahy6op9u2#

请尝试以下操作:
git rm --缓存的供应商/bin/doctrine. php
对于所有被忽略但获得此状态的文件。

lf5gs5x2

lf5gs5x23#

添加文件(git add)并开始跟踪它们并将其隐藏(git stash),然后您可以执行git checkout master

1wnzp6jl

1wnzp6jl4#

乍一看,这些文件应该被忽略,但它们已经被提交了,您需要使用git rm --cached删除它们。
然而,根据您的评论,似乎文件在当前分支中未被跟踪,但在主分支中存在?我认为您需要删除当前分支中的文件(将其移动到其他地方), checkout 主分支,git rm --cached文件,并合并两个分支。

相关问题