4、Git:文件操作

heimu 2020-06-02

命令

  • 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 # 查看所有文件状态

4、Git:文件操作

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

touch zxh.txt
git status

4、Git:文件操作

 3、添加到暂存区

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

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

4、Git:文件操作

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

4、提交文件到本地仓库

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

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

4、Git:文件操作

git checkout 文件名取消修改

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

 4、Git:文件操作

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

git checkout zxh.txtgit status

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

4、Git:文件操作

git reset HEAD filename取消暂存

git status
git reset HEAD zxh.txt
git status

一开始文件状态是Staged,取消暂存后,发现在暂存区的文件,已经取消了暂存,文件的状态变成了Modified4、Git:文件操作

git rm filename移除版本库

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

  • 再将它移除

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

4、Git:文件操作

4、Git:文件操作

忽略文件

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

在主目录下建立 ”.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帮我们生成好了

4、Git:文件操作

 .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*

相关推荐