• 4、Git:文件操作


    命令

    • git rm filename

    • git checkout filename

    • git reset HEAD filename

    文件4种状态

    版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

    • Untracked: 未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制.通过git add状态变为Staged

    • Unmodify: 文件已经入库未修改,即版本库中的文件快照内容与文件夹中完全一致。 这种类型的文件有两种去处,如果它被修改,而变为Modified。如果使用 git rm移出版本库,则成为deleted文件,文件被删除了

    • Modified:文件已修改,仅仅是修改,并没有进行其他的操作.这个文件也有两个去处,通过git add可进入暂存staged状态,或者 使用git checkout则丢弃修改过, 返回到unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改!

    • Staged:暂存状态.执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify 状态. 执行git reset HEAD filename取消暂存,文件状态为Modified

    举例测试

    • 测试文件的四种状态,和对应的命令

    git add .文件暂存

    1、没有文件的情况下

    git init # 创建一个全新的本地仓库
    git status # 查看所有文件状态

     2、这个时候就会显示,有文件未被跟踪 Untracked

    touch zxh.txt
    git status

     3、添加到暂存区

    git add zxh.txt # 添加到暂存区
    git status

    现在就回提示有个文件进入了暂存staged,需要提交

    git commit -m "描述"提交文件

    4、提交文件到本地仓库

    git commit -m "临时文件"
    git status

    这个时候文件就提交上去了

    git checkout 文件名取消修改

    1、我们修改一下文件内容,就会发现文件处于modified已修改状态,没有放到暂存区。

     

     2、这个时候,如果我们不想修改了,可以使用git checkout zxh.txt命令从库中取出未修改的文件,覆盖当前修改的。

    git checkout zxh.txt
    git status

    就会发现你修改的内容被之前保存的文件覆盖了,如果修改内容后,放到了暂存区,那使用checkout命令就无法覆盖了

    git reset HEAD filename取消暂存

    git status
    git reset HEAD zxh.txt
    git status

    一开始文件状态是staged,取消暂存后,发现在暂存区的文件,已经取消了暂存,文件的状态变成了Modified

    git rm filename移除版本库

    • 首先将文件提交到本地仓库形成了一个新的版本库

    • 再将它移除

    • 发现文件夹中的文件被删除了,并且状态变成了deleted

    忽略文件

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

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

    1. 忽略文件中的空行或以井号(#)开始的行 将会被忽略

    2. 可以使用Linux通配符。例如:星号(*)代表对个字符,问号( ?)代表一个字符,方括号( [abc] )代表可选字符范围,大括号( {string1,string2,...} )代表可选的字符串等。

    3. 如果名称的最前面有一个感叹号( !),表示例外规则,将不被忽略

    4. 如果名称的最前面是一个路径分隔符( / ),表示要忽略的文件在此目录下,而子目录中的文件不忽略

    5. 如果名称的最后面是一个路径分隔符( / ),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)

    举例

    # 为注释
    logs/:        # 忽略当前路径下的logs目录,包含logs下的所有子目录和文件
    /logs.txt:    # 忽略根目录下的logs.txt文件
    *.class:    # 忽略所有后缀为.class的文件
    !/classes/a.class:# 不忽略classes目录下的a.class文件
    tmp/*.txt:    # 忽略tmp目录下的所有.txt文件
    **/foo:        # 忽略所有路径下的foo,比如:可以忽略/foo, a/foo, a/b/foo等

    使用idea 新建SpringBoot项目,默认会生成 .gitignore 文件,spring帮我们生成好了

     .gitignore文件如下:

    HELP.md
    target/
    !.mvn/wrapper/maven-wrapper.jar
    !**/src/main/**
    !**/src/test/**
    
    ### STS ###
    .apt_generated
    .classpath
    .factorypath
    .project
    .settings
    .springBeans
    .sts4-cache
    
    ### IntelliJ IDEA ###
    .idea
    *.iws
    *.iml
    *.ipr
    
    ### NetBeans ###
    /nbproject/private/
    /nbbuild/
    /dist/
    /nbdist/
    /.nb-gradle/
    build/
    
    ### VS Code ###
    .vscode/

    java通用模板

    *.class
    *.log
    *.lock
    
    # Package Files #
    *.jar
    *.war
    *.ear
    target/
    
    # idea
    .idea/
    *.imi
    
    *velocity.log*
    
    #  STS  #
    .apt_generated
    .factorypath
    .springBeans
    
    ### InelliJ IDEA ###
    *.iml
    *.ipr
    *.iws
    .idea
    .classpath
    .project
    .settings/
    bin/
    
    *.log
    tmp/
    
    #rebel
    *rebel.xml*
    致力于记录学习过程中的笔记,希望大家有所帮助(*^▽^*)!
  • 相关阅读:
    第一期站立会议7(11.21 个人)
    第一期站立会议6(11.20 个人)
    第一期站立会议5(11.19个人)
    第一期站立会议4(11.18个人)
    第一期站立会议3(11.17个人)
    第一期站立会议2(11.16个人)
    第一期站立会议1(11.15 个人)
    第二阶段第三次站立会议
    对第一阶段提出意见的总结及改进方案
    第二阶段第二次站立会议
  • 原文地址:https://www.cnblogs.com/zxhbk/p/13034344.html
Copyright © 2020-2023  润新知