1、Git本地版本库结构

如下图所示:

  1. 工作区(Working Directory

    添加、编辑、修改、删除文件等操作。
  2. 暂存区(Stage

    打算提交,但还没提交的内容。最后可以统一提交到Git仓库中。也可以不提交,撤销回来。
  3. Git仓库(Git Repository

    实实在在的项目存储的每个一历史的版本。

2、Git常用操作方法

Git的专属命令都是以git开始的,然后是索要执行的操作,最后还可以加上一些参数。

以下命令都需在仓库中执行。

(1)状态查看。

命令: git status

命令作用:查看工作区、暂存区状态。

(2)添加文件到暂存区。

命令:git add [file name]

命令作用:

  • 该命令的作用是告诉Git系统,将指定文件的当前快照写入到版本库暂存区。即,将文件交给Git进行版本管理。
  • 提交到暂存区,并且转换文件中的换行符。
  • 被Git追踪的暂存区中的文件可以被提交到本地版本库。

(3)文件从暂存区撤回到工作区。

命令:git rm --cached [file name]

命令作用:把文件从暂存区撤回到工作区。

(4)提交文件。

命令:git commit -m '本次提交的说明'

命令作用:提交操作就通过命令将Git暂存区中的文件快照永久性地写入到本地版本库中。

3、补充:添加多个文件到暂存区

有两种方式:

  • git add命令后添加多个文件,文件之间使用空格分隔。
  • git add命令后使用通配符*指定多个文件。

示例:

# 1.查看工作区、暂存区状态
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
hello.java # 文件名为红色
test.java # 文件名为红色
xyj-sha_hs.py # 文件名为红色
xyj-sun_wk.py # 文件名为红色
xyj-zhu_bj.py # 文件名为红色 nothing added to commit but untracked files present (use "git add" to track) # 2.添加多个文件到暂存区
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git add hello.java test.java L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: hello.java # 文件名为绿色
new file: test.java # 文件名为绿色 Untracked files:
(use "git add <file>..." to include in what will be committed)
xyj-sha_hs.py # 文件名为红色
xyj-sun_wk.py # 文件名为红色
xyj-zhu_bj.py # 文件名为红色 # 3.使用通配符添加多个文件到暂存区
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git add xyj*.py L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: hello.java # 文件名为绿色
new file: test.java # 文件名为绿色
new file: xyj-sha_hs.py # 文件名为绿色
new file: xyj-sun_wk.py # 文件名为绿色
new file: xyj-zhu_bj.py # 文件名为绿色

4、补充:提交操作未写备注

如果你在执行git conmit提交命令的时候,并没有写-m信息,这时会启动文本编辑器,以便输入本次提交的说明。

默认的提交消息包含最后一次运行git status的输出,放在注释行里,如下图:

另外开头还有一空行,供你输入提交说明。你完全可以去掉这些注释行,不过留着也没关系,多少能帮你回想起这次更新的内容有哪些。

如下:

会弹出一个窗口,一个vim编辑器窗口:

说明:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Changes to be committed:
# modified: readme.txt
#
  1. Please enter the commit message for your changes. Lines starting

    with '#' will be ignored, and an empty message aborts the commit.

    对于你这次提交中修改的内容要进行说明,

    以'#'开头的行将被忽略,并且在第一行填写说明信息。
  2. Changes to be committed: modified: readme.txt

    readme.txt的修改已被Git追踪到。

进行提交说明的补充:

保存并退出后,提交成功,如下图:

总结:当提交操作的说明内容比较多,或者需要写的比较详细的时候,可以使用这种方式提交。

5、补充:从工作区直接提交到版本库

尽管使用暂存区域的方式,可以准备好要提交的细节,但有时候这么做略显繁琐。

Git提供了一个跳过使用暂存区域的方式,只要在提交的时候,给git commit命令加上-a选项,Git就会自动把所有已经跟踪过的文件,暂存起来一并提交,从而跳过git add步骤。

命令:git commit -a

示例:

(1)先查看当前工作目录中的文件状态。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean

可以看到非常的干净。

(2)我们创建两个文件。

一个文件是新增文件test.txt,此前没有被Git追踪过。

两个文件是readme.txt,已被Git追踪,我们将该文件变成已修改状态。

# 1.新建test.txt
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ echo "hello test" > test.txt # 2.修改readme.txt文件
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ echo "hello git v666" >> readme.txt # 3.查看工作目录中的文件状态
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: readme.txt # 已修改状态,未在暂存区 Untracked files:
(use "git add <file>..." to include in what will be committed)
test.txt # 未追踪状态 no changes added to commit (use "git add" and/or "git commit -a")

(3)提交到Git版本库中。

我们直接使用git commit -a -m命令直接执行提交操作,看看会发生什么情况。

# 提交
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git commit -a -m 'test -a'
[master 1b0de31] test -a
1 file changed, 1 insertion(+) # 查看工作目录文件状态
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.txt # 未追踪状态 nothing added to commit but untracked files present (use "git add" to track)

我们可以看到,未被追踪状态的文件,不能直接从工作区直接提交到版本库,使用-a选择也不可以。

『现学现忘』Git基础 — 14、Git基础操作的总结与补充的更多相关文章

  1. 『现学现忘』Git基础 — 13、Git的基础操作

    目录 1.Git最基础的使用方式 (1)初始化本地版本库 (2)查看文件的状态 (3)把文件添加到暂存区 (4)把暂存区的内容提交到本地版本库 2.总结本文用到的Git命令 1.Git最基础的使用方式 ...

  2. 『现学现忘』Git基础 — 2、Git和SVN的区别

    1.Git和SVN的区别 (1)SVN(集中式版本管理系统) 集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者 ...

  3. 『现学现忘』Git基础 — 3、Git介绍

    目录 1.Git的历史 2.Git的特点 3.Git在项目协作开发中所解决的问题 1.Git的历史 Git是目前世界上最先进的分布式版本控制系统,开源.免费. Git 是 Linus (林纳斯)为了帮 ...

  4. 『现学现忘』Git基础 — 4、Git下载与安装

    目录 1.Git下载 2.Git在Windows下的详细安装 3.验证Git是否安装成功 1.Git下载 进入官方地址下载Git客户端:https://git-scm.com/download/win ...

  5. 『现学现忘』Git基础 — 7、设置Git Bash终端默认路径

    目录 1.Git Bash默认路径 2.如何查看Git Bash终端默认路径 3.如何修改Git Bash终端的默认路径 4.拓展:指定目录进入Git Bash终端 5.注意事项 如果您不熟悉Git命 ...

  6. 『现学现忘』Git基础 — 12、Git用户签名(补充)

    目录 1.修改用户签名 2.取消用户签名 3.用户签名的优先级 4.总结本文用到的Git命令 1.修改用户签名 其实很简单,就是重新执行git config命令,换个用户名和邮箱地址就可以了,新配置的 ...

  7. 『现学现忘』Git基础 — 19、在Git中进行忽略文件操作

    目录 1.忽略文件说明 2.忽略文件的原则 3..gitignore忽略规则 4.忽略文件的三种方式 (1)忽略单个仓库中的文件(远程共用) (2)忽略单个仓库中的文件(本地使用) (3)全局忽略 1 ...

  8. 『现学现忘』Git基础 — 23、Git中的撤销操作

    目录 1.撤销操作说明 2.撤销工作区中文件的修改 3.撤销暂存区中文件的修改 4.总结 1.撤销操作说明 我们在使用Git版本管理时,往往需要撤销某些操作.比如说我们想将某个修改后的文件撤销到上一个 ...

  9. 『现学现忘』Git基础 — 24、Git中查看历史版本记录

    目录 1.查看详细的历史版本记录 2.简化显示历史版本记录 3.历史版本记录常用操作 (1)指定查看最近几次提交的内容 (2)以简单图形的方式查看分支版本历史 (3)翻页与退出 4.查看分支相关的版本 ...

随机推荐

  1. 记录Markdown的学习

    目录 1. 引言 2. 标题 这是一级标题 这是二级标题 这是三级标题 这是四级标题 3. 文字相关 3.1 粗体 3.2 斜体 3.3 粗体和斜体 3.4 删除线 3.5 混合使用 3.6 反引号引 ...

  2. Golang 包了解以及程序的执行

    Golang 包了解以及程序的执行 引言  Go 语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案.Go 语言中为我们提供了很多内置包,如 fmt.o ...

  3. Makefile学习(一)

       objects = main.o kbd.o command.o display.o \              insert.o search.o files.o utils.o       ...

  4. Java中会存在内存泄漏吗,请简单描述?

    为了搞清楚Java程序是否有内存泄露存在,我们首先了解一下什么是内存泄露:程序运行过程中会不断地分配内存空间:那些不再使用的内存空间应该即时回收它们,从而保证系统可以再次使用这些内存.如果存在无用的内 ...

  5. 什么是 Spring Cloud Bus?我们需要它吗?

    考虑以下情况:我们有多个应用程序使用 Spr ng Cloud Config 读取属性,而S ring Cloud Config 从GIT 读取这些属性. 下面的例子中多个员工生产者模块从 Employe ...

  6. springboot-数据库访问之jpa

    什么是springDate? springData的作用: 整体简化的架构: JPA :Java Persistence API 如果没有springData 我们需要去学每一种对应的jpa实现, 有 ...

  7. JavaScript 焦点事件

    焦点事件,当一个元素(比如链接或表单)得到或失去焦点时发生. 实例: 1 <!DOCTYPE html> 2 <html lang="en"> 3 < ...

  8. DRF(Django REST Framework)框架

    目录 一.DRF中的Request 二.前戏: 关于面向对象的继承 三.初级版本 1. settings.py文件 -- 注册app 2. models.py文件 -- 创建表 3. admin.py ...

  9. java-LinkedMap

    输入一组数,输出是按每个出现的频率,比如1,3,3,4,5,9,9,9,3,3,输出为3,3,3,3,9,9,9,1,4,5如果频率一样就按原顺序输出. package com.lyb.array;i ...

  10. python学习笔记(九)——线程与进程

    一.线程 Python 中为我们提供了两个模块来创建线程. _thread threading thread 模块已被废弃.用户可以使用 threading 模块代替.所以,在 Python 中不能再 ...