忽略从本地git回购中删除的文件,该文件应保留在其他回购中

忽略从本地git回购中删除的文件,该文件应保留在其他回购中,git,arduino,Git,Arduino,我git克隆了一个arduino草图,需要我删除库目录,并通过mv./libraries$sketchdir/sketch\u libraries/将其放置在repo之外的其他位置。我无法在目录存在的情况下编译草图,因此我将其删除;但是,当我运行git status时,它会抱怨库目录缺少内容 我想告诉git不要故意忽略这个目录丢失的事实,不要再纠缠我了。我尝试将libraries/*添加到.gitignore,但未能获得所需的结果 我怎样才能做到这一点 如果只想忽略特定主机上的目录,请尝试将目录

我git克隆了一个arduino草图,需要我删除库目录,并通过
mv./libraries$sketchdir/sketch\u libraries/
将其放置在repo之外的其他位置。我无法在目录存在的情况下编译草图,因此我将其删除;但是,当我运行
git status
时,它会抱怨库目录缺少内容

我想告诉git不要故意忽略这个目录丢失的事实,不要再纠缠我了。我尝试将
libraries/*
添加到.gitignore,但未能获得所需的结果


我怎样才能做到这一点

如果只想忽略特定主机上的目录,请尝试将目录路径添加到
.git/info/exclude
而不是
.gitignore

您的排除文件应如下所示:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
libraries/*

git status
甚至不会抱怨排除文件已更改。

我刚刚找到了问题所在。通过将目录添加到.gitignore或info/exclude,git不会跟踪该目录(如果它是本地的)。但在这种情况下,您希望在本地删除它并将其保留在远程repo上,并希望git取消对该远程目录的跟踪

为此,只需运行以下命令:


git更新索引--跳过工作树库/*

请编辑您的问题,以显示您运行的命令以及哪些命令无法正常工作。没有这些细节,我们只能猜测问题是什么。我在
.git/info/exclude
文件中添加了libraries/*并运行了
git status
,但它仍然包括libraries/*中所有已删除的文件。我遗漏了什么吗?请复制git status返回的消息并粘贴到这里好吗?有很多,但我认为上面应该给出你想要的信息:在branch master上,你的分支是最新的“origin/master”。未提交的更改:(使用“git add/rm…”更新将提交的内容)(使用“git checkout…”放弃工作目录中的更改)修改:keyer_功能_和_选项。h删除:libraries/adafru_mcp2017.cpp删除:libraries/Adafruit_mcp2017。h删除:libraries/Adafruit_RGBLCDShield.cpp很抱歉格式不好。请检查下面我的新答案。这似乎没有更好的效果。我使用“git更新索引--跳过工作树库/*/*/*/*/*/*”,以避免出现“致命:无法标记文件库/USB\U主机\U屏蔽”之类的错误,这对我来说很有效。git status报告的文件列表不是现在更短了吗?你只需要在库之后键入
/*
,而不是5,直到我有5个文件时才开始工作,因为我的文件变深了5个。