1、Git最基础的使用方式

(1)初始化本地版本库

要对现有的某个项目开始使用Git管理,只需到此项目所在的根目录,执行git init命令即可。

准备一个新的Git本地版本库:

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit
$ git init
Initialized empty Git repository in J:/git-repository/learngit/.git/

说明:初始化Git仓库后,在当前目录下会出现一个名为.git的目录,所有Git需要的数据和资源都存放在这个目录中。

不过目前,仅仅是按照既有的结构框架,初始化好了Git仓库中所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。

(2)查看文件的状态

使用git status命令进行查看。

进入本地版本库查看工作区、暂存区中文件的状态。

# 执行`git status`命令
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
# 在主分支上工作
On branch master # 尚无提交文件,指的是本地库中没有提交过任何文件。
No commits yet # 无需提交(可创建/复制文件并使用“git add”进行跟踪)
# 无需提交指的是,暂存区中没有任何可提交的文件
# 追踪文件,就是让Git管理该文件。
nothing to commit (create/copy files and use "git add" to track)

(3)把文件添加到暂存区

1)创建文件后查看工作区、暂存区中文件的状态。

我们在仓库目录中创建一个readme.txt文件后,在执行git status命令。

# 创建readme.txt文件
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ touch readme.txt L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ ll
total 0
-rw-r--r-- 1 L 197121 0 4月 4 00:38 readme.txt # 查看工作区、暂存区状态
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master # 尚无提交文件,指的是本地库中没有提交过任何文件。
No commits yet Untracked files:
(use "git add <file>..." to include in what will be committed)
readme.txt # 文件名为红色 nothing added to commit but untracked files present (use "git add" to track)

说明:

  1. Untracked files:readme.txt

    表示发现未追踪的文件readme.txt
  2. use "git add <file>..." to include in what will be committed

    表示对readme.txt文件,你可以使用git add <file>命令,

    将新建文件添加到暂存区。
  3. nothing added to commit but untracked files present (use "git add" to track)

    表示你没有添加任何内容到暂存区,但是存在未追踪的文件,

    可使用“git add”命令进行追踪。

2)将工作区的文件添加到暂存区。

执行git add命令,将readme.txt文件添加到暂存区。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git add readme.txt
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory

说明:

warning: LF will be replaced by CRLF in readme.txt.

The file will have its original line endings in your working directory

  • 警告:readme.txt文件中的换行符格式会被替换,CRLF替换LF。

    在我们安装Git的第8步时,所选择的选项。这是Git底层的东西,不用我们控制的。
  • 但是该文件在你的工作目录中,还是保存原始文件的换行符格式。
  • LF是Linux系统下的换行符,而CRLF是Windows系统下的换行符。由于我们的文件创建于Linux系统下(Git Bash中创建),而保存中Windows系统中,所以文件中的行结束符要使用Windows下的CRLF格式换行。
  • 以上两行就是一个提示作用,对我们的操作没有实际影响。

3)再次查看工作区、暂存区状态。

执行git status命令查看工作区、暂存区状态。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master No commits yet Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: readme.txt # 文件名为绿色

说明:

  1. Changes to be committed: new file: readme.txt

    所做更改:新建了readme.txt文件
  2. use "git rm --cached <file>..." to unstage

    提示你可以适用使“git rm --cached <file> ...”命令,

    把文件从暂存区中撤回到工作区。

总结:

只要在"Changes to be committed"这行下面显示的文件,就说明是已暂存状态。

如果此时提交,那么该文件此时此刻的版本,将被留存在历史记录中。

git add命令后面可以指明要跟踪的文件或目录路径。

如果是目录的话,就说明要递归跟踪该目录下的所有文件。(其实git add命令的潜台词就是把目标文件快照放入暂存区域,同时未曾跟踪过的文件标记为已跟踪。)

4)将文件从暂存区撤回到工作区。

执行git rm --cached命令,将readme.txt文件从暂存区撤回到工作区。

并执行git status命令查看工作区、暂存区状态。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git rm --cached readme.txt
rm 'readme.txt' L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master No commits yet Untracked files:
(use "git add <file>..." to include in what will be committed)
readme.txt # 文件名为红色 nothing added to commit but untracked files present (use "git add" to track)

可以看到结果,readme.txt文件又成为了一个未被Git追踪的文件。

(4)把暂存区的内容提交到本地版本库

当暂存区域已经准备妥当可以提交时,在此之前,请一定要确认还有什么修改过的,或新建的文件还没有git add到暂存区,否则提交的时候不会记录这些还没暂存起来的变化。

所以,每次准备提交前,先用git status查看下,需要提交的文件是不是都已暂存起来了,然后再运行提交命令git commit -m '备注信息'

1)将文件添加到缓存区并提交到本地版本库。

readme.txt文件加入到暂存区,并执行git commit -m '本次提交的说明',将readme.txt文件提交到本地版本库。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git add readme.txt
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git commit readme.txt -m 'My first commit.new file readme.txt'
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory
[master (root-commit) e84b93b] My first commit.new file readme.txt
1 file changed, 1 insertion(+)
create mode 100644 readme.txt

重点说明最下面三行内容:

  1. master:表示master(主干)分支。
  2. root-commitroot表示根,意思是该版本库的第一次提交。
  3. e84b93b:提交操作的版本号概要。
  4. My first commit.new file readme.txt:本次提交的说明信息。
  5. 1 file changed:一个文件被修改。
  6. 1 insertions(+):增加了1行内容,+号表示增加,-号表示减少。
  7. create mode 100644 readme.txtreadme.txt文件创建模式为100644

    100代表regular file(普通文件),644代表文件权限。

提示:提交时记录的是放在暂存区域的快照。

即:每一次执行提交操作时,都是对项目作一次快照,以后可以回到这个状态,或者与这个状态进行比较。

2)将文件提交到本地版本库后工作区、暂存区状态。

执行git status命令查看工作区、暂存区状态。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master # 暂存区中没有可提交的内容
# 工作目录和本地版本库是一样的,没有修改、新建等操作。
nothing to commit, working tree clean

3)修改文件内容后查看工作区、暂存区状态。

修改readme.txt文件内容后,再执行git status命令查看工作区、暂存区状态。

# 修改文件内容
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ echo "git world" >> readme.txt L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ cat readme.txt
hello git world
git world # 查看工作区、暂存区状态。
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 # 文件名为红色 no changes added to commit (use "git add" and/or "git commit -a")

说明:

  1. Changes not staged for commit:modified: readme.txt

    readme.txt文件被修改,但是没有添加到暂存区
  2. use "git add <file>..." to update what will be committed

    表示对readme.txt文件,你可以使用git add <file>命令,

    将文件更新添加到暂存区。

    和第(2)步的

    use "git add <file>..." to include in what will be committed

    是有一点差别的。
  3. use "git restore <file>..." to discard changes in working directory

    表示可以通过git restore <file>...命令,放弃工作目录中文件的更改。

    就是还原文件。Git早期版本该命令为git checkout --<file>...
  4. no changes added to commit (use "git add" and/or "git commit -a")

    表示你没有添加要提交的更改,

    and/or表示你可使用“git add”把变更文件添加到暂存区,

    在通过"git commit -a"提交到本地版本库,

    你也可以通过"git commit -a"直接把变更的文件提交到本地版本库。

    注意使用git commit -a命令用加文件名。

4)把修改后的文件提交到暂存区。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git add readme.txt
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory 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)
modified: readme.txt # 文件名为绿色

说明:

  1. Changes to be committed: modified: readme.txt

    readme.txt的修改已被Git追踪到
  2. use "git restore --staged <file>..." to unstage

    你可以用git restore --staged <file>...命令,

    将文件从暂存区撤出,但不会撤销文件的更改。

5)将修改过后的文件提交到本地版本库。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git commit readme.txt -m 'modified readme.txt'
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory
[master e704334] modified readme.txt
1 file changed, 1 insertion(+)

可以看到,master后没有 (root-commit)了,因为根提交只有一次。

新创建的文件先添加到暂存区,然后添加到本地版本库。

而已经提交到本地版本库的文件,修改了,可以按照上面操作,也可以直接提交到本地版本库。

2、总结本文用到的Git命令

序号 Git命令 说明
1 git init 初始化本地版本库。
2 git status 查看当前工作区和暂存区文件的状态。
3 git add <file>... 可以将文件添加到暂存区。
4 git commit -m ' ' 提交更新。

『现学现忘』Git基础 — 13、Git的基础操作的更多相关文章

  1. 『现学现忘』Git基础 — 21、git diff命令

    目录 1.git diff 命令说明 2.比较工作区与暂存区中文件的差别 3.比较暂存区与本地库中文件的差别 4.总结git diff命令常见用法 5.总结 1.git diff 命令说明 在comm ...

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

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

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

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

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

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

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

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

  6. 『现学现忘』Git基础 — 14、Git基础操作的总结与补充

    目录 1.Git本地版本库结构 2.Git常用操作方法 3.补充:添加多个文件到暂存区 4.补充:提交操作未写备注 5.补充:从工作区直接提交到版本库 1.Git本地版本库结构 如下图所示: 工作区( ...

  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. NET程序的代码混淆、加壳与脱壳

    通常我们通过代码混淆.加密的形式达到软件保护的目的.在Web开发里我们接触过的可能就是JS代码加密了,可以通过对JS代码进行混淆.加密从而实现对核心JS代码的保护.如果没有接触过的可以在这里简单了解一 ...

  2. Skye无人机刷Betaflight详细图文教程

    ​前言 首先十分感谢B站TASKBL up主的视频教程以及他的耐心指导,视频链接Skye 原机主板刷BetaFlight 参考教程_哔哩哔哩_bilibili.整个改造过程耗时三天,现把改造过程以及遇 ...

  3. Java 将CSV转为Excel

    CSV(Comma Separated Values)文件是一种纯文本文件,包含用逗号分隔的数据,常用于将数据从一个应用程序导入或导出到另一个应用程序.通过将CSV文件转为EXCEL,可执行更多关于数 ...

  4. Spring cloud config 客户端连接RabbitMQ 报 socket closed

    java.net.SocketException: socket closed at java.net.SocketInputStream.socketRead0(Native Method)     ...

  5. 什么是 Swagger?你用 Spring Boot 实现了它吗?

    Swagger 广泛用于可视化 API,使用 Swagger UI 为前端开发人员提供在线沙箱.Swagger 是用于生成 RESTful Web 服务的可视化表示的工具,规范和完整框架实现.它使文档 ...

  6. elasticsearch 索引数据多了怎么办,如何调优,部署 ?

    面试官:想了解大数据量的运维能力. 解答:索引数据的规划,应在前期做好规划,正所谓"设计先行,编码在后", 这样才能有效的避免突如其来的数据激增导致集群处理能力不足引发的线上客户 ...

  7. java的泛型hei

    泛型是一种未知的数据类型,当我们不知道使用什么数据类型的时候就可以使用泛型 泛型也可以看出是一个变量,用来接受数据类型 E e :Element 元素 T t: Type 类型 /* Collecti ...

  8. JVM的基础知识

    一.JVM的基础知识 1.JVM内存结构: 1.JVM堆内存结构: 2.JVM内存分配: 3.Java的堆机构和垃圾回收: 4.Jvm堆内存配置参数: 5.JVM新生代概念和配置: 6.JVM老生代概 ...

  9. 网络协议之:socket协议详解之Socket和Stream Socket

    目录 简介 Socket是什么 Stream Socket 使用socat创建一个TCP服务器 使用ss检查TCP连接 使用nc连接socket 总结 简介 不管是在普通的网络编程中还是在netty中 ...

  10. (stm32f103学习总结)—独立看门狗(IWDG)

    一.IWDG介绍 1.1 IWDG简介 STM32F1芯片内部含有两个看门狗外设,一个是独立看门狗IWDG,另 一个是窗口看门狗WWDG.两个看门狗外设(独立和窗口)均可用于检测 并解决由软件错误导致 ...