git如何移除某文件夹的版本控制

Posted 朝晖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git如何移除某文件夹的版本控制相关的知识,希望对你有一定的参考价值。

目录结构如下

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如何移除某文件夹的版本控制的主要内容,如果未能解决你的问题,请参考以下文章

vs2013中有一个解决方案是由git版本控制的,怎么能够移除版本控制,保留代码

LinuxMac 递归移除某文件夹下所有文件(不包含文件夹)的执行权限命令

LinuxMac 递归移除某文件夹下所有文件(不包含文件夹)的执行权限命令

LinuxMac 递归移除某文件夹下所有文件(不包含文件夹)的执行权限命令

js移除某一类的div

如何管理在每个 git 版本中添加私有代码片段?