我的印象是,在git回购中,任何被忽略的文件都是不相关的。但我遇到了以下情况:
.vs文件夹在.gitignore中列出:
$ cat .gitignore
.git/
.vs/
bin/
My Project/
obj/
packages/
App_Data/
但是,当我试图切换到另一个分支时,.vs文件夹中的一个文件正在阻塞:
$ git checkout test
error: Your local changes to the following files would be overwritten by checkout:
.vs/myproject/v16/.suo
Please commit your changes or stash them before you switch branches.
Aborting
如果我试图添加这个文件,git会抱怨:
$ git add .vs/myproject/v16/.suo
The following paths are ignored by one of your .gitignore files:
.vs
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
并对此表示感谢。
发布于 2022-07-14 16:39:44
忽略的文件是未跟踪的,而且git checkout
不会覆盖未跟踪的文件。为了避免永久删除内容,这是一件安全的事情。
你可以用-f
强制结账.
-f,-力
在切换分支时,即使索引或工作树与HEAD不同,也继续进行,即使在中存在方式的未跟踪文件也是如此。这用于丢弃本地更改和任何未跟踪的文件或目录。
或者,因为它无论如何都会被签出覆盖,所以您可以删除违规文件然后签出。
我建议删除该文件,因为它特定于一个文件,而-f
可以覆盖更多的内容。
发布于 2022-07-14 16:47:27
让git取消对.gitignore中列出的文件和文件夹的跟踪,并记住提交让它生效。
git rm -r --cached .
git add .
git commit -m "Remove ignored files"
详细信息
How do I make Git forget about a file that was tracked, but is now in .gitignore?
发布于 2022-07-14 17:54:14
因为您已经将.vs/
添加到.gitignore
中,但是它仍然处于git缓存中。为了摆脱这种局面。您必须从缓存中删除它,然后尝试更改分支。
请遵循以下步骤:
git rm -r --cached .vs
如果它显示了添加到.gitignore
中的新更改,那么提交这些更改并更改分支,否则只需更改分支就可以了。
git checkout test
https://stackoverflow.com/questions/72983510
复制相似问题