有时候有一些冗余数据在你的工程里积累,你必须清理它们。让我们看看Git怎么做到这个。

一种是使用git rm命令,另外一种是使用add命令。这样可以让文件消失。如果你只有一个文件想要删除,那么git rm命令就是你想要的。

$ git rm file1.txt

它真正的从文件系统中删除了文件,并且它会暂存这个文件已经被删除的事实

$ git status

如果你提交了,这个文件不会从之前的历史中消失

$ git commit -m"Remove file1.txt"

但或从未来的提交中消失

如果你像我一样,是一个命令行爱好者,你可能会忘了git这个环节,只是简单的输入rm文件名,然后你会注意到git发现文件已经消失

$ rm file2.txt

$ git status

告诉你改变还没有被暂存

你可以同样使用git rm命令来暂存它,就像之前一样

$ git rm file2.txt

$ git status

它并不在意文件已经不存在了,但是它暂存了删除已经发生的事实

在一个实际的清除场景中,你可能会有许多文件要删除,你不太可能从命令行中来做这些事,你可能会用一些其它的工具,比如Finder或者Windows Explorer或者一些其它工具。状态告诉你,这些被删除的文件已经消失了。

$ git status

但是你不想单独删除它们

如果你在做这样的清除工作,你可以使用add命令,

$ git add -u .

$ git status

他会遍历你的工作树,寻找git之前已经识别到的文件,现在要消失的文件,它会把它们作为新的删除来暂存。你会注意到我这里输入了一个点,作为文件名字。那只是一个意味着当前工作目录的简写。

当add命令看到它的时候,他会从你当前所在的目录,递归到最深处,寻找它能够添加的所有文件,或者说,在这个场景下,所有能够被删除的文件。

最后,你可能想删除一个文件,不想从文件系统中真正删除它,换个说法,你想告诉git不再跟踪这个文件,但是把它保留在工作树中,这可能是一种情况,你意外地提交了一个文件,你并不想让它成为历史的一部分,你可以使用git rm --cached去实现它,

$ git rm --cached

$ git status

它暂存了删除,但是,如你所看,它在那里保存了文件。

现在,在你的工作树中,作为一个不被追踪的文件

现在这个技巧带来了其它的问题,比如,如果你不想这个文件成为历史的一部分,你需要返回到之前的提交中去清除它?这是另外一个视频的主题。

或者,如果你想文件不被追踪,但你想要确定在你将来某个时候你不会偶然的添加它,也有方法,比如使用git ignore file去保证,这将是另外一堂课的主题。

现在。桌面的客户端去处理这些怎么样?答案是真的很简单。

如果你在Finder中删除一个文件,然后切换到mac到Github客户端,你可以看到,它会马上识别到哪些被删除的文件,准备好为你暂存那些删除,你知道,这些表示后面,有很多东西在运行,Git让删除文件的操作变得非常简单,祝你在清理之旅中好运。

转载于:https://blog.51cto.com/12585676/1940923

1.8 Remove相关推荐

  1. LeetCode19. Remove Nth Node From End of List 删除链表中的倒数第n个位置的元素

    前言 本文是LeetCode19. Remove Nth Node From End of List解法,这个题目需要删除链表中的倒数第n个位置的元素 代码 # -*- coding: utf-8 - ...

  2. Ubuntu apt-get install、apt-get -f install、apt-get --purge remove、apt-get update、apt-get upgrade、

    1. 常用命令列表 命令 描述 apt-cache search package 搜索软件包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-g ...

  3. ArrayList Iterator remove java.lang.UnsupportedOperationException

    在使用Arrays.asList()后调用add,remove这些method时出现 java.lang.UnsupportedOperationException异常.这是由于Arrays.asLi ...

  4. Spring源码分析【9】-SpringSecurity密码Remove原理

    很明显代码已经说了认证完成移除credentials和其他某些安全数据 // Authentication is complete. Remove credentials and other secr ...

  5. Remove Duplicates from Sorted Array II -- LeetCode

    原题链接: http://oj.leetcode.com/problems/remove-duplicates-from-sorted-array-ii/  这道题跟Remove Duplicates ...

  6. 编译安装apr 1.5.2 时报 rm: cannot remove `libtoolT': No such file or directory

    今天在编译安装apr-1.5.2 的时候执行./configure --prefix=/usr/local/apr 的时候报了一个这么样的信息 " rm: cannot remove `li ...

  7. ListT中,Remove和RemoveAt区别

    Remove删除的是匹配的第一项.比如你的list里面有2个相同的项.那么就删除第一个.后面的不删除,找不到元素和删除失败都返回false RemoveAt是删除索引下的项 转载于:https://w ...

  8. leetcode 203 Remove Linked List Elements

     Remove all elements from a linked list of integers that have valueval. Example Given: 1 --> 2 ...

  9. List中remove()方法的陷阱,被坑惨了!

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/pelifymeng2/ article/details/78085836 Java的List在删 ...

  10. 为何每次用完 ThreadLocal 都要调用 remove()

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 什么是内存泄漏 Key 的泄漏 Value 的泄漏 如何避免 ...

最新文章

  1. 获取子iframe的属性
  2. 不做“浮冰”,深挖AI技术和场景
  3. 传感器融合:自动驾驶领域的另一个突围方向
  4. easypoi实现Excel导入
  5. 全国计算机等级考试题库二级C操作题100套(第48套)
  6. 每日站立会议 12.06
  7. numpy 删除所有为_用Numpy和Pandas工具分析销售数据
  8. js中的继承1--类继承
  9. 【优化预测】基于matlab粒子群算法优化SVM预测【含Matlab源码 1424期】
  10. 批量网刻操作系统(使用GHOST工具)
  11. pwm占空比的c语言编程详解,灵动微MM32F003硬件最小系统 --- PWM占空比从0%到100%例程解析【18】...
  12. [转帖]组织机构、职务职称英文译法
  13. 计算机表格填充,Excel表格中数据填充功能的使用方法
  14. 高德地图之逆地理编码
  15. 任意四面体的外接球/三维空间不共面四点确定唯一球面(附完整代码)
  16. js写小游戏(打字母)
  17. eclipse调试项目,debugger没反应 解决办法
  18. CISP——密码学的应用
  19. 双群晖nas数据备份同步
  20. python统计分析方法

热门文章

  1. websocket中发生数据丢失_为什么事实上却发生了数据丢失,只有少部 分数据可以加载进来...
  2. java 继承先后顺序_Java中的继承关系的加载顺序
  3. mysql字节对齐_结构体字节对齐-位域及其对齐
  4. mysql jdbc 表结构_JavaEE_day09_MySQL多表JDBC
  5. java中table是什么标签_[Java教程]javascript格式化table标签内容
  6. java打印文档_从Java应用程序打印文档?
  7. 【 MATLAB 】使用 MATLAB 比较占空比不同的周期方波的 DFS 图
  8. 【 MATLAB 】MATLAB 实现模拟信号采样后的重建(二)零阶保持(ZOH)
  9. 【 MATLAB 】两个序列的卷积和运算的MATLAB实现(1)
  10. Spartan-6的SelectIO资源