git rm -r --cached 去掉已经托管在git上的文件

  • git rm -r --cached 去掉已经托管在git上的文件

    1.gitignore文件

      在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .gitignore 文件的方法。这个文件每一行保存了一个匹配的规则例如:

    # 此为注释 – 将被 Git 忽略

                *.a       # 忽略所有 .a 结尾的文件
                !lib.a    # 但 lib.a 除外
                /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
                build/    # 忽略 build/ 目录下的所有文件

                doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

        这样设置了以后 所有的 .pyc 文件都不会添加到版本库中去。

    2.gitignoreglobal全局忽略文件

    另外 git 提供了一个全局的 .gitignore,你可以在你的用户目录下创建 ~/.gitignoreglobal 文件,以同样的规则来划定哪些文件是不需要版本控制的。

    需要执行 git config --global core.excludesfile ~/.gitignoreglobal来使得它生效。

    其他的一些过滤条件

        * ?:代表任意的一个字符
        * *:代表任意数目的字符
        * {!ab}:必须不是此类型
        * {ab,bb,cx}:代表ab,bb,cx中任一类型即可
        * [abc]:代表a,b,c中任一字符即可

        * [ ^abc]:代表必须不是a,b,c中任一字符

        由于git不会加入空目录,所以下面做法会导致tmp不会存在 tmp/*             //忽略tmp文件夹所有文件

        改下方法,在tmp下也加一个.gitignore,内容为
                            *
                            !.gitignore
        还有一种情况,就是已经commit了,再加入gitignore是无效的,所以需要删除下缓存
                            git rm -r --cached ignore_file

    注意: .gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

        正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。
        git update-index --assume-unchanged PATH    在PATH处输入要忽略的文件。

        另外 git 还提供了另一种 exclude 的方式来做同样的事情,不同的是 .gitignore 这个文件本身会提交到版本库中去。用来保存的是公共的需要排除的文件。而 .git/info/exclude 这里设置的则是你自己本地需要排除的文件。 他不会影响到其他人。也不会提交到版本库中去。

        .gitignore 还有个有意思的小功能, 一个空的 .gitignore 文件 可以当作是一个 placeholder 。当你需要为项目创建一个空的 log 目录时, 这就变的很有用。 你可以创建一个 log 目录 在里面放置一个空的 .gitignore 文件。这样当你 clone 这个 repo 的时候 git 会自动的创建好一个空的 log 目录了。


    3.git rm -r --cached显神威

    但是有时候,gitignore考虑不全面,发现有不该提交的文件已经提交后,仅仅在.gitignore中加入忽略是不行的。这个时候需要执行:

    git rm -r --cached filename 

    去掉已经托管的文件,然后提交即可。

### 回答1: git rm -r --cached 是一个 Git 命令,用于从 Git 仓库中删除文件或目录,并将其从 Git 的缓存区中移除。这个命令会将文件或目录从 Git 的版本控制中删除,但不会删除本地文件系统中的文件或目录。如果需要删除本地文件系统中的文件或目录,可以使用 git rm -r 命令。 ### 回答2: git rm -r --cached是一个git命令,用于将文件git版本库的缓存区(index)中移除,但不会删除本地工作区中的文件。 具体来说,该命令会将指定的文件或目录从git的暂存区中删除,但是仍将该文件或目录保留在本地磁盘上。这使我们可以选择性地从版本控制中删除文件,而不需要从本地磁盘中删除它们。 例如,执行以下命令: ``` git rm -r --cached example_folder/ ``` 将会删除名为example_folder的目录下的所有文件文件夹,并将其从git的暂存区中移除。此时该目录及其中的所有文件都不再受版本控制的管理,但仍然可以在本地的工作目录中找到它们。 需要注意的是,与git rm -r命令不同的是,git rm -r --cached不会在本地删除文件,因此需要在完成git rm -r --cached后手动删除不需要的文件。 总之,git rm -r --cached命令提供了一种管理git版本控制中文件的灵活方式,允许我们控制要将哪些文件提交到版本库中。 ### 回答3: git rm -r --cached是一个Git命令,它用于从Git暂存区中删除文件或目录,但不从文件系统中删除它们。该命令适用于需要取消Git版本控制的文件。相比之下,使用git rm命令可以在Git暂存区和文件系统中删除文件,而git rm --cached命令仅在Git暂存区中删除文件,而不影响文件系统中的文件Git rm -r --cached命令的使用方式如下: git rm -r --cached <file or directory> 其中,<file or directory>表示要从Git暂存区中删除的文件或目录。 执行git rm -r --cached命令后,Git将取消跟踪选定文件的更改,并在暂存区中删除它们。但文件或目录本身并没有被删除,Git仍会将它们保留在本地文件系统中。如果需要将文件从本地文件系统中删除,请使用操作系统提供的文件系统命令,如rm、del等。 这个命令对于需要暂存一些文件但不参与版本控制的情况非常有用。同时,它也可以对不小心添加到Git版本控制中的文件进行取消控制的操作。在实际使用过程中,我们需要理解清楚Git命令的含义和功能,以便更加高效地使用Git进行版本控制。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值