目录结构如下
project
bin
lib
src
......
执行如下的操作
git add .
git commit -m "add bin/ lib/ src/"
git push origin master
突然发现原来 lib
目录不需要提交到版本库,但是现在远程已经存在该目录,what should I do.(吐出去的东西还能收回来吗)
万能的Git啊,help me!
功夫不负有心人,找到了解决问题的方法,其实就是 git rm
的命令行参数。
git rm
命令参数
-n --dry-run
Don’t actually remove any file(s). Instead, just show if they exist in the index and would otherwise be removed by the command.
-r
Allow recursive removal when a leading directory name is given.
--cached
Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone.
解决方法
git rm -r -n --cached "bin/" //-n:加上这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览。
git rm -r --cached "bin/" //最终执行命令.
git commit -m" remove bin folder all file out of control" //提交
git push origin master //提交到远程服务器
此时 git status
看到 bin/目录状态变为 untracked
可以修改 .gitignore
文件 添加 bin/
并提交 .gitignore
文件到远程服务器,这样就可以不对bin目录进行版本管理了。
以后需要的时候,只需要注释 .gitignore
里 #bin/
内容,重新执行 git bin/
,即可重新纳入版本管理。
转自:
git如何移除某文件夹的版本控制_街头看日出的博客-CSDN博客
https://blog.csdn.net/m0_37710388/article/details/99318461?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-2-99318461.pc_agg_new_rank&utm_term=git+%E7%9B%AE%E5%BD%95%E7%A7%BB%E9%99%A4git%E7%89%88%E6%9C%AC%E5%BA%93&spm=1000.2123.3001.4430