无法结账主分公司

时间:2013-09-13 16:06:18

标签: git git-checkout

我一直在一个分支机构中使用一些代码来改进应用程序。既然我已经完成了,我想将这个分支与master分支合并,但我不能。我首先尝试像这样检查主分支:

$ git checkout master

但是我收到了这个错误:

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

但供应商目录包含在.gitignore文件中。 如果我这样做:

$ git status

我明白了:

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

在此之后,我会这样做:

$ git merge branch

如何避免此错误?

4 个答案:

答案 0 :(得分:6)

所以这里的问题是,在你当前的分支上(我们称之为current),vendor目录在.gitignore中并且不是回购的一部分。

但是,它在您的master分支中提交,因此,您的主分支正在抛出错误The following untracked working tree files would be overwritten by checkout

解决方案很简单。

1)在您的分支current中,将您的供应商目录重命名为其他目录(例如vendor.temp,您可以使用mv vendor vendor.temp

2)现在做一个git checkout master。这次不会引发任何冲突,因为您尝试签出的分支上没有已存在的公共供应商目录。

3)现在在git rm -r --cached vendor分支上运行master。这将删除在master分支中跟踪的供应商目录。

4)更新.gitignore分支中的master文件,开始忽略vendor目录。提交相应的更改

5)确定您需要的供应商目录,分支vendor中的master目录,或分支vendor中的current目录,并重命名/删除文件相应

答案 1 :(得分:1)

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

答案 2 :(得分:0)

尝试以下方法:

git rm --cached vendor / bin / doctrine.php

并且您已忽略所有文件但获得此状态。

答案 3 :(得分:0)

乍一看,文件应该被忽略但已经提交,你需要用git rm --cached删除它们。

但是,根据您的comment,似乎文件在当前分支中未跟踪但存在于主分支中?我认为您需要删除当前分支中的文件(将其移动到其他位置),检查主分支,git rm --cached文件,并合并两个分支。