GIT - 当没有提交时 - 当文件在gitignore中时,无法签出到其他分支

时间:2014-03-05 17:05:47

标签: git git-branch gitignore git-checkout

尝试结帐到另一个分支

我有一个带

的.gitignore文件
.someFile

即使我没有任何更改,尝试结帐到另一个分支也会失败

dev@cool:~/proj/source$ git status
# On branch master
nothing to commit, working directory clean
dev@cool:~/proj/source$ git checkout someBranchName 
error: Your local changes to the following files would be overwritten by checkout:
    .someFile
Please, commit your changes or stash them before you can switch branches.
Aborting
dev@cool:~/proj/source$ 

从.gitignore中删除文件并再次添加它没有帮助

运行命令:

      git update-index --assume-unchanged .someFile

 git rm --cached .someFile

没有帮助

任何想法?

2 个答案:

答案 0 :(得分:0)

如果您暂时删除.gitignore文件会怎样?听起来Git正在跟踪文件,即使你告诉它忽略它。

您可以尝试:

git rm --cached .someFile

从git中删除文件(不从工作区中删除)。然后提交。

答案 1 :(得分:0)

应该将分支之间的切换视为应用代表它们之间差异的补丁。

在你的情况下,git尝试应用的区别是"添加新文件.somefile,但仅限于它不存在。"。

然后它就会发生冲突。

如果要使用目标分支中的版本覆盖文件,则只需在切换前将其删除即可在工作树中删除。

如果你想保留被忽略的文件,那么你可以重命名它放在一边(这不会引起任何冲突,直到它的新临时名称与其他文件名不匹配)。然后进行切换。之后只需替换" .somefile"与您临时重命名的那个 如果内容不匹配,这将导致工作树更改为文件。