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. 一个简单的模拟实例说明Task及其调度问题

    Task对于.NET的重要性毋庸置疑.通过最近的一些面试经历,发现很多人对与Task及其调度机制,以及线程和线程池之间的关系并没有清晰的认识.本文采用最简单的方式模拟了Task的实现,旨在说明Task ...

  2. python3 爬虫6--requests的使用(1)

    1用requests进行网页请求与urlopen差不多,这里省略不说 2抓取网页的学习 import requests import re headers={'User-Agent': 'Mozill ...

  3. Nginx HTTP负载均衡和反向代理的配置与优化

    一.什么是负载均衡和反向代理 1.负载均衡 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器具有等价的地位,都可以单独提供服务而无需其他服务的辅助.通过某种负载分担技术,将外部发送来的 ...

  4. springboot-数据库访问之mybatis

    选中mysqldirver,数据库驱动器 选中jdbc ,帮我们配置数据源,连接数据库 选中mybatis,持久层 <!-- 这个不是springboot官方出来的,是mybatis为了设备sp ...

  5. 列举 IoC 的一些好处?

    IoC 的一些好处是:它将最小化应用程序中的代码量.它将使您的应用程序易于测试,因为它不需要单元测试用例中的任何单例 或 JNDI 查找机制.它以最小的影响和最少的侵入机制促进松耦合.它支持即时的实例 ...

  6. WebSQL是HTML 5规范的一部分吗?

    不是,虽然很多人将其标记为HTML 5,但它不是HTML 5规范的一部分.HTML 5规范基于SQLite.

  7. Leetcode刷题之矩阵中的指针用法

    矩阵中的指针用法 1 快慢指针 ​ Leetcode27移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度.不要使用额外的数组 ...

  8. MATLAB与Carsim联合仿真时提示matlab not found的解决方法(CarSim在联合仿真时提示找不到MATLAB的解决方法)

    CarSim8.02并没有提供选择联合仿真的MATLAB/Simulink的版本的功能,CarSim总是与最后安装的MATLAB/Simulink进行联合仿真,如果安装有多个matlab版本则只打开最 ...

  9. 一文读懂充电宝usb接口电路及制作原理详细

    转自:http://www.elecfans.com/dianlutu/dianyuandianlu/20180511675801.html USB充电器套件,又名MP3/MP4充电器,输入AC160 ...

  10. onsubmit阻止表单提交

    在实际开发中往往会遇到检查表单数据的合法性,如果数据不合法,就不让其提交. <!DOCTYPE html> <html> <head> <meta chars ...