更新 git repo 时删除已删除的文件/文件夹
Posted
技术标签:
【中文标题】更新 git repo 时删除已删除的文件/文件夹【英文标题】:Delete deleted files/folder when updating a git repo 【发布时间】:2014-09-06 11:10:22 【问题描述】:我创建了一个 git repo 并提交了文件/文件夹,一段时间后从我的本地 git 文件夹中删除了一个文件夹并尝试更新 repo 我运行命令 -
git add .
git commit -m "second commit"
git remote add origin https://github.com/trialcode/test.git
git push -u origin master
尽管文件已更新,但已删除的文件夹仍显示在我的 git 存储库中。让我知道我在 git 文件/文件夹更新方面做错了什么。
仅供参考 - 我试过git branch -d folder_to_remove/
但它抛出一个错误 - error: branch 'folder_to_remove/' not found
。
【问题讨论】:
重复How to remove a directory in my GitHub repository? 【参考方案1】:Vijay's answer 可以,但我还想指出一个额外的解决方案。
通常git add
不会将已删除的文件添加到您的暂存区(待提交),所以当您运行时
git add .
您实际上并没有暂存任何已删除的文件。
使用git add
暂存已删除的文件
如果您希望 git add
实际暂存已删除的文件,则必须使用 --update
或 -u
标志:
git add --update
# Or
git add -u
此外,您还可以使用 --all
或 -A
标志,但如果我没记错的话,该标志仅暂存从 Git 2.0 版开始的已删除文件......或类似的东西。另请注意,该标志还将暂存未跟踪的文件,这与 -u
不同,后者仅更新已跟踪的文件:
git add --all
# Or
git add -A
文档
git-add(1) Manual Page【讨论】:
感谢您提供更多信息 +1【参考方案2】:Git 将在您的本地 repo 目录中有一个隐藏文件夹 .git/
。有关本地存储库的所有内容都将存储在该文件夹中。
所以当你创建一个文件夹并提交时,它将被存储。之后即使你从文件系统中删除文件或文件夹,它也不会被通知到本地 git 存储库。
要通知 git 你已删除文件或文件夹,请使用命令git rm
。
试试这个
git rm folder_name
git commit -m "removed folder"
git remote add origin https://github.com/trialcode/test.git
git push -u origin master
这里的folder_name
是您要删除的文件名或文件夹名。
【讨论】:
+1 并作为注释 - 我们需要添加-r
标志以递归删除目录。以上是关于更新 git repo 时删除已删除的文件/文件夹的主要内容,如果未能解决你的问题,请参考以下文章
在 VSCode 中保存文件会删除 git repo 中的所有跟踪文件