git rm - - cached filename

git rm - - cached filename

命令叫做:跟踪取消。
意义:把文件从git中拿出来,不再进行版本跟踪,但保留工作区的文件。 

就目前看,我用的时候,保证我的工作区干净的,然后执行git rm --cached filename,是把这个文件从版本库中清除。如果其他人更新版本,他的版本库中filename文件没了,工作区中也没了。。。

    •    新建文件1.txt, 未被跟踪(Untracked files),提交到暂存区(Changed to be committed),未提交到版本库。 使用git rm —cached 1.txt,是把文件恢复到未被跟踪的状态,即删除暂存区中的1.txt;
    •    文件1.txt,已经提交到版本库,工作区,暂存区都是干净的.  
使用git rm —cached 1.txt,  
    ◦    把工作区的文件1.txt置为了”未跟踪”状态,即Untracked files。

    ◦    暂存区生成一个deleted 1.txt的记录,如果提交了,就是把版本库中的1.txt删除。

    ◦    不影响工作区中的文件。

    •    文件1.txt, 已经提交到版本库,修改1.txt,并且提交到了暂存区。  
使用git rm —cached 1.txt, 
    ◦    把工作区的文件1.txt置为了”未跟踪”状态,即Untracked files。

    ◦    暂存区生成一个deleted 1.txt的记录,如果提交了,就是把版本库中的1.txt删除。

    ◦    不影响工作区中的文件。还是修改后的1.txt

    •    文件1.txt, 已经提交到版本库,修改1.txt,提交到暂存区,继续修改1.txt。  
使用git rm —cached 1.txt  
会报错,不能执行操作。 


举例子
举例子: 
我本地先git fetch到远程def分支的代码,然后进行git rebase操作。但是本地有文件修改了没有存,所以要先提交。 
但是这个文件是日志或者runtime文件,我不想放到版本库里了。 
因为以前放到了版本库,已经commit过了。这时候,要把他们清理出版本库,就要用git rm —cached filename。

git rm -r —cached ...使用的时候用-r因为要批量处理目录中的文件,这样这些文件就从版本库里清理出来,但是要有一步commit操作。




实例二:利用git rm --cached把版本库中的目录config从版本库中移除

本地操作,
1.修改了配置文件
advanced/.gitignore
2.使用git  rm  - - cached -r dirname/ 或者 git  rm  - - cached  filename的方式,把config目录及其内容清除版本库。
/common/config
/mobile/config
3. 提交到版本库,再push到远程


测试站操作,
1. 从远程库pull
这要操作,有个问题,就是新的版本中配置文件都没了....这不是我要看到的。
2. 应该先修改.gitignore文件,清除配置目录
vi  .gitignore
git rm --cached -r common/config/
git rm --cached -r mobile/config/

3.  提交到版本库

4.  从远程库合并 git fetch  git rebase  origin/devel

这样,虽然从远程取下了本地提交的版本,但是配置文件都在呢

5.  push到远程

没有更多推荐了,返回首页