zoukankan      html  css  js  c++  java
  • 7.移除文件

    要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。 可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。

    如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changes not staged for commit” 部分(也就是 未暂存清单)看到:

    $ rm PROJECTS.md
    $ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.
    Changes not staged for commit:
      (use "git add/rm <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
            deleted:    PROJECTS.md
    
    no changes added to commit (use "git add" and/or "git commit -a")

    然后再运行 git rm 记录此次移除文件的操作:

    $ git rm PROJECTS.md
    rm 'PROJECTS.md'
    $ git status
    On branch master
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
    
        deleted:    PROJECTS.md

    下一次提交时,该文件就不再纳入版本管理了。 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母)。 这是一种安全特性,用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复。

    另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪。 当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。 为达到这一目的,使用 --cached 选项:

    $ git rm --cached README

    git rm 命令后面可以列出文件或者目录的名字,也可以使用 glob 模式。 比方说:

    $ git rm log/*.log

    注意到星号 * 之前的反斜杠 , 因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开("*" 对 shell 来说,有很多的涵义,在按下 enter 键时"*"可能会被展开成为别的字符,因为git有自己的匹配方式,所以这里使用反斜杠来把它转意成普通字符,以免在git开始匹配之前*被展开成了其他字符)。 此命令删除 log/ 目录下扩展名为 .log 的所有文件。 类似的比如:

    $ git rm *~

    该命令为删除以 ~ 结尾的所有文件。

  • 相关阅读:
    10月17日学习日志
    10月10日学习日志
    10月15日学习日志
    ERP临时汇报打草稿
    锁定字段的几个方法
    Mvc model验证总结
    Html5 WebSocket详细介绍
    C#连接Oracle数据库的方法(System.Data.OracleClient、Oracle.DataAccess.Client也叫ODP.net、Oracle.ManagedDataAccess.dll)
    MVC Ajax调用Action时OnActionExecuting RedirectResult 无法跳转的处理办法
    C#调用存储过程中事务级临时表返回DataTable列乱序解决办法
  • 原文地址:https://www.cnblogs.com/hihtml5/p/9239602.html
Copyright © 2011-2022 走看看