zoukankan      html  css  js  c++  java
  • Git06

    、移除文件与目录(撤销add)

    当执行如下命令时,会直接从暂存区删除文件,工作区则不做出改变

    #直接从暂存区删除文件,工作区则不做出改变
    git rm --cached <file>

    执行命令

    通过重写目录树移除add文件:

    #如果已经用add 命令把文件加入stage了,就先需要从stage中撤销
    git reset HEAD <file>...

    当执行 “git reset HEAD” 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

    示例:把f1.txt文件从暂存区撤回工作区

    移除所有未跟踪文件

    #移除所有未跟踪文件
    #一般会加上参数-df,-d表示包含目录,-f表示强制清除。
    git clean [options] 

    示例:

    移除前:

    执行移除:

    移除后:

    复制代码
    #只从stage中删除,保留物理文件
    git rm --cached readme.txt 
    
    #不但从stage中删除,同时删除物理文件
    git rm readme.txt 
    
    #把a.txt改名为b.txt
    git mv a.txt b.txt 
    复制代码

    当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

    当执行 “git reset HEAD” 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

    当执行 “git rm –cached <file>” 命令时,会直接从暂存区删除文件,工作区则不做出改变。

    当执行 “git checkout .” 或者 “git checkout — <file>” 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。

    当执行 “git checkout HEAD .” 或者 “git checkout HEAD <file>” 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改 动。

    4.3.5、查看文件修改后的差异

    git diff用于显示WorkSpace中的文件和暂存区文件的差异

    用"git status"只能查看对哪些文件做了改动,如果要看改动了什么,可以用:

    #查看文件修改后的差异
    git diff [files]

    命令:

     ---a表示修改之前的文件,+++b表示修改后的文件

    #比较暂存区的文件与之前已经提交过的文件
    git diff --cached

    也可以把WorkSpace中的状态和repo中的状态进行diff,命令如下:

    #比较repo与工作空间中的文件差异
    git diff HEAD~n

    4.3.6、签出

    如果仓库中已经存在文件f4.txt,在工作区中对f4修改了,如果想撤销可以使用checkout,签出覆盖

    检出命令git checkout是git最常用的命令之一,同时也是一个很危险的命令,因为这条命令会重写工作区

    语法:

    复制代码
    #用法一
    git checkout [-q] [<commit>] [--] <paths>...
    #用法二
    git checkout [<branch>]
    #用法三
    git checkout [-m] [[-b]--orphan] <new_branch>] [<start_point>]
    复制代码

    <commit>是可选项,如果省略则相当于从暂存区(index)进行检出

    复制代码
    $ git checkout branch
    #检出branch分支。要完成图中的三个步骤,更新HEAD以指向branch分支,以及用branch  指向的树更新暂存区和工作区。
    
    $ git checkout
    #汇总显示工作区、暂存区与HEAD的差异。
    
    $ git checkout HEAD
    #同上
    
    $ git checkout -- filename
    #用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改。
    
    $ git checkout branch -- filename
    #维持HEAD的指向不变。用branch所指向的提交中filename替换暂存区和工作区中相   应的文件。注意会将暂存区和工作区中的filename文件直接覆盖。
    
    $ git checkout -- . 或写作 git checkout .
    #注意git checkout 命令后的参数为一个点(“.”)。这条命令最危险!会取消所有本地的  #修改(相对于暂存区)。相当于用暂存区的所有文件直接覆盖本地文件,不给用户任何确认的机会!
    
    $ git checkout commit_id -- file_name
    #如果不加commit_id,那么git checkout -- file_name 表示恢复文件到本地版本库中最新的状态。
    复制代码

    示例: 

    4.3.6、忽略文件

    有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

    在主目录下建立".gitignore"文件,此文件有如下规则:

    1. 忽略文件中的空行或以井号(#)开始的行将会被忽略。
    2. 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
    3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
    4. 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
    5. 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

    如:

    复制代码
    #为注释
    *.txt #忽略所有 .txt结尾的文件
    !lib.txt #但lib.txt除外
    /temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp
    build/ #忽略build/目录下的所有文件
    doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
    复制代码

    更多规则请点这里

    示例:

    创建一个.gitignore文件忽视所有的日志文件

    查看状态:

    从上图中可以看出2个日志文件并没有添加到暂存区,直接被忽视了。

    针对各种语言与项目的Git忽视文件: https://github.com/kaedei/gitignore   https://github.com/github/gitignore

    通用的java忽视文件:

    复制代码
    # Compiled class file
    *.class
    
    # Log file
    *.log
    
    # BlueJ files
    *.ctxt
    
    # Mobile Tools for Java (J2ME)
    .mtj.tmp/
    
    # Package Files #
    *.jar
    *.war
    *.ear
    *.zip
    *.tar.gz
    *.rar
    
    # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
    hs_err_pid*
    复制代码

    通用的Visual Studio开发项目忽视文件:

     View Code

    idea忽视文件:

    复制代码
    .idea/
    *.iml
    out/
    gen/
    idea-gitignore.jar
    resources/templates.list
    resources/gitignore/*
    build/
    build.properties
    junit*.properties
    IgnoreLexer.java~
    .gradle
    
    /verification
    复制代码
  • 相关阅读:
    如何备份Chrome浏览器收藏夹
    Postman初接触
    Fitness初接触
    selenium向IE的输入框中输入字符时特别慢
    Test Case Design Method
    decision table
    Pair Testing
    selenium python 报错“ unable to find binary in default location”
    Eclipse+Pydev环境下出现error “eclipse Non-UTF-8 code”
    Eclipse + pydev插件
  • 原文地址:https://www.cnblogs.com/huaobin/p/14910270.html
Copyright © 2011-2022 走看看