我需要到一个文件夹(名称上传)从跟踪排除。 我试图运行
git rm -r --cached wordpress/wp-content/uploads
之后,我加入了路径的.gitignore
/wordpress/wp-content/uploads
但是,当我跑git status
,他们显示为删除。 如果我尝试提交更改,该文件将被删除,不仅从跟踪中删除。
我究竟做错了什么?
我也曾尝试
git update-index --assume-unchanged <file>
但这似乎只untrack文件。 但是,我需要从跟踪删除整个文件夹(包括子文件夹)。
我碰到这个问题就来了,而谷歌搜索“从跟踪混帐删除文件夹”。 该任择议定书的问题,导致我的答案。 我在这里总结它的后代。
题
如何删除从我的git仓库的文件夹没有从我的本地机器(即开发环境)删除呢?
回答
第1步:添加的文件夹路径,您的回购根.gitignore
文件。
path_to_your_folder/
第2步:从当地的git跟踪删除的文件夹,但保持你的磁盘上。
git rm -r --cached path_to_your_folder/
第3步:把你的改变你的混帐回购协议。
该文件夹将被认为是“删除”,从Git的观点(即他们在过去的历史,但不是在最新提交,人们从这个回购拉动会得到他们的树删除的文件),但留在你的工作目录因为你使用--cached
。
这对我的作品:
git rm -r --cached --ignore-unmatch folder_name
--ignore-unmatch
是很重要的位置,而没有选择git会在指数错误退出上的第一个文件不是。
为了忘却目录递归添加/*/*
的路径:
git update-index --assume-unchanged wordpress/wp-content/uploads/*/*
使用git rm --cached
不利于合作。 更多详细的活动: 如何停止跟踪并忽略更改Git中一个文件?
从git的文档:
你可能想要做的另一个有用的事情是要在文件中你的工作树但是从你的暂存区域中删除。 换句话说,你可能要保持你的硬盘上的文件,但不能让Git跟踪它了。 如果你忘了的东西添加到您的.gitignore文件,并意外地上演了,像一个大的日志文件或者一堆。一个编译的文件。这是特别有用。 要做到这一点,使用--cached选项:
$ git rm --cached readme.txt
所以,也许不包括“-r”?
我知道这是一个古老的线程,但我只是想一点点添加为显着的解决方案并没有解决我的问题(虽然我试过很多次)。
我可以真正停止git的形式跟踪该文件夹的唯一途径是做到以下几点:
- 使本地文件夹的备份,放在一个安全的地方。
- 从当地的回购删除文件夹
- 确保缓存被清除
git rm -r --cached your_folder/
- 添加
your_folder/
对的.gitignore - 提交更改
- 增加了备份回到您的回购
您现在应该看到该文件夹不再跟踪。
不要问我为什么刚才清除缓存,我没有工作,我不是一个Git超级精灵,但是这是我解决了这个问题。