Git新手教程-向仓库中添加commit(五)

前言

在该篇文章中,咱们终于要来学习如何建立本身的提交(commit),在前面的文章中,咱们已经学会使用 git init 命令来建立新仓库,使用 git clone 命令来复制现有仓库,使用 git log 命令来查看现有的提交。以及使用很是重要的 git status 命令来查看仓库的状态。本篇文章会在这些知识的基础上添加 git addgit commitgit diff 。 在具体讲解这三个命令以前,咱们先简单的看看这三个命令的做用。html

  • git add 可让你将文件从工做目录添加到暂存区。
  • git commit 可让你将文件从暂存区中取出。并保存在仓库区中,也就是你实际将要提交的地方。
  • git diff 能够显示文件两个版本之间的差别,它的输出与上篇文章中使用的 git log -p 命令的输出彻底同样。

git add 命令的使用

在使用 git add 命令以前,咱们先回顾一下仓库的建立过程。咱们如今本身的喜欢的目录下建立仓库,在下图中个人仓库的地址为documents/GitTest/GitTestProject。在接下来的文章中,都会以该仓库做为例子进行讲解。linux

首先咱们先进入该目录,并经过 git init建立Git仓库:git

git的init命令使用.jpg

在没有向仓库提交任何commit时,屡次运行git init命令是没有关系的,git init命令只会屡次从新初始化仓库算法

检查仓库状态!别忘了

咱们必定要在运行Git相关命令后,必定要使用 git status 命令来检查当前仓库的状态。由于咱们不能保证,咱们是否遗忘了某些东西。若是你像我同样使用了 git status命令,那么你能获得下列输出结果:vim

On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)
复制代码

开始添加文件

当咱们使用 git status 检查了仓库确实没有任何文件后,那接下来咱们来建立一些文件。这里我分别建立了三个文件,Git总目录.mdGit练习.mdJVM系列之总目录.md,这个时候咱们再使用 git status 来查看咱们仓库的状态,咱们能获得下列结果:bash

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

  Git总目录.md
  Git练习.md
  JVM系列之总目录.md

nothing added to commit but untracked files present (use "git add" to track)
复制代码

要将文件提交到暂存区,咱们须要使用 git add 命令,这里咱们将Git总目录.md文件添加到暂存区中,使用命令 git add Git总目录.md,咱们再使用 git status 查看咱们的仓库状态,咱们能获得下列结果:app

还记得暂存区吗?暂存区是Git目录下的一个文件,存储的是即将进入下个 commit 内容的信息。能够将暂存区看作准备工做台,Git 将在此区域获取下个 commit。编辑器

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

  new file:   Git总目录.md

Untracked files:
  (use "git add <file>..." to include in what will be committed)

  Git练习.md
  JVM系列之总目录.md
复制代码

这个时候,在命令行中的 Untracked files 下,就只有Git练习.mdJVM系列之总目录.md了,ide

细心的小伙伴确定看到(use "git rm --cached <file>..." to unstage),该命令能够帮助咱们将你 git add 错误提交的文件,从暂存区中移除,此外,在命令行输出中出现了"unstage"(撤消暂存)字眼。将文件从工做目录移到暂存区叫作"staging"(暂存)。若是已移动文件,则叫作"staged"(已暂存)。从暂存区将文件移回工做目录将"unstage"(撤消暂存)。工具

使用git add 添加剩余的文件

当咱们已经将 Git总目录.md 添加到暂存区中后,咱们可能还想将剩下的两个文件 Git练习.mdJVM系列之总目录.md 也添加到暂存区中。固然咱们能够一个一个的使用使用 git add 命令添加剩余的文件,咱们也能够这样:

git add Git练习.md JVM系列之总目录.md
复制代码

使用git add <file1> <file2> … <fileN>这种方式,咱们能够添加多个文件,其中<file>表明一个或多个文件。

除了使用上述方法之外,咱们还可使用一个特殊的命令行字符 .(点).(点) 表明当前目录,能够用来表示全部文件和物理(注意!注意!注意!包括全部嵌套文件和目录)。

git add Git练习.md JVM系列之总目录.md
#等于
git add .
复制代码

若是你使用 .(点) 添加了多余的文件,那么咱们可使用git rm --cached <file1> <file2> … <fileN>命令,将多余的文件从暂存区中移除。

git commit 命令的使用

当咱们将上文提到的三个文件都添加到暂存区以后,如今须要将暂存区中的内容提交到仓库中去,也就是使用 git commit 命令,固然在运行该命令以前,咱们要时刻使用 git status 命令查看当前仓库的状态。使用 git stasus 查看状态:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

 new file:   Git总目录.md
 new file:   Git练习.md
 new file:   JVM系列之总目录.md
复制代码

嗯,美滋滋,全部的文件都在暂存区中了,那如今开始咱们的提交吧。在具体提交以前,咱们须要注意,若是你在下载 Git后没有设置文本编辑器,那么 Git 会默认会调用系统的默认编辑器,通常状况是 Vi 或者 Vim 。固然咱们也能够配置咱们本身喜欢的文本编辑器。这里我配置的是 Sublime Text ,配置命令以下所示:

git config --global core.editor "'/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl' -n -w"
复制代码

若是你像我同样配置了Sublime Text,那么咱们会获得下图:

Git_Commit文本编辑.jpg

第一行中,就是咱们须要输入这次commit的信息,由于这是咱们的第一次提交,因此这里我填的是 Initial commit ,固然你能够根据你的喜爱填写信息。其余被#标记的行都是注释信息,都会被忽略。当咱们使用 git commit 命令后,咱们在控制台会获得以下输出:

[master (root-commit) 18522c6] Initial commit
 3 files changed, 45 insertions(+)
 create mode 100644 Git总目录.md
 create mode 100644 Git练习.md
 create mode 100644 JVM系列之总目录.md
复制代码

若是你配置了Git文本编辑器,那么会在你输入内容,退出编辑器后,会自动提交commit。

这个时候咱们再使用 git status 查看咱们的仓库状态,输出结果为:

On branch master
nothing to commit, working tree clean
复制代码

上述代表,全部暂存区中的文件,都提交到Git的仓库区中了。如今咱们就将第一个commit提交到仓库中去了。固然有可能你提交的描述信息很简短,那么你可使用-m选项来跳过编辑器。以下所示:

git commit -m "initial commit"
复制代码

固然经过 -m 选项提交的消息只包含标题的,不会包含正文,若是你想怎么知道怎么写一个阅读性良好的commit message,那么你有可能阅读下面这两篇文章;

进行第二次commit

如今咱们已经进行咱们的第一次commit了,那么如今咱们修改Jxm系列之总目录.md文件,打开该文件,将文件中的语句- Java类加载器(双亲委派模型)删掉,并保存。以下操做:

- Java内存结构及分区
- Java对象的建立、存储及访问
- Java判断对象是否存活
- 垃圾回收算法(GC)
- Jvm中的常见的垃圾回收器
- Java类加载过程
- Java类加载器(双亲委派模型)#---> 删除这行
复制代码

接着咱们使用git status查看当前咱们的仓库状态:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

 modified:   Jvm系列之总目录.md

no changes added to commit (use "git add" and/or "git commit -a")
复制代码

从控制台中,咱们能够看到咱们的文件Jvm系列之总目录.md已经被标记为modifed了,那如今咱们如何将修改的文件提交到Git的仓库区中呢?要将内容提交到Git的仓库区中去,咱们须要将文件提交到暂存区中,在以前的命令中将文件提交到暂存区中,咱们须要使用命令 git add 命令,固然 git add 命令不只只针对新建的文件,它仍能够将修改后的文件提交到暂存区中。也就是咱们只要使用 git addgit commit 命令,咱们就能将修改后的文件提交到Git的仓库中去了。

简单总结

在学习了git addgit commit 命令后,咱们简单的总结一下这两个命令。

  • git add 能够不只能够向暂存区中添加新的文件,一样也能将修改的文件进行暂存。
  • git commit 会取出暂存区的文件,并保存到仓库中。该命令须要输入commit消息。

git diff

还有最后一个命令 git diff 。这个命令能够帮助咱们查看咱们一些没有提交的更改,也就是说咱们能够看到当前修改的文件与Git仓库之间的差别。仍是Jvm系列之总目录.md文件为例,这里咱们继续删除- Java类加载过程,以下图所示:

- Java内存结构及分区
- Java对象的建立、存储及访问
- Java判断对象是否存活
- 垃圾回收算法(GC)
- Jvm中的常见的垃圾回收器
- Java类加载过程 #---> 删除这行
复制代码

而后咱们使用 git diff命令查看命令行输出:

git_diff展现.jpg

在上图中,红色表示当前修改的文件删除的行。我相信你们看到这个界面必定会很熟悉,还记的咱们以前介绍长裤仓库的历史提交记录中,所将的git log -p吗?其实git log -p其实就是使用了git diff命令。关于上图中,若是你们不理解每行所表明的意思,那么能够查看《查看仓库的历史记录(四)》中git log -p中的介绍。

IntelliJ IDEA or Android Sutdio 图形化界面的使用

又到了咱们熟悉的偷懒环节了。如今咱们来看看一下 git addgit commitgit diff 在idea中的使用,

git add

若是你的项目已经经过Git管理,那么当你在IDEA中建立新的文件夹时,编译器会以下提示:

ide_add操做展现.jpg

经过提示消息,咱们其实就能看出,就是提示咱们是否将当前新建立的文件添加到Git的暂存区中,若是你选择肯定,那么就会将该文件添加到暂存区中。若是你不当心选择了cancel,不用担忧,你仍然可使用下列方式来添加文件到暂存区中。经过选择你要添加的文件,点击鼠标右键依次选择Git--->add。就能够将该文件添加到暂存区中。以下图所示:

git_add_延迟展现.jpg

小提示:在ide是以一种很是直观的颜色来表示当前仓库中的文件状态:

  1. 红色:表示当前文件或目录没有被跟踪。
  2. 绿色:表示当前文件或目录已经被添加到仓库中了。
  3. 蓝色:表示被添加到仓库中的文件或目录被修改或移动。
  4. 橙色:表示被忽略的文件。
  5. 白色:表示没有任何更改。

git commit 使用

当咱们将文件添加到暂存区中后,咱们能够经过ide顶部的工具栏进行commit操做,记住是顶部哟!具体以下图所示:

git_commit_展现.jpg

注意:若是你是修改已经跟踪过的文件,那么咱们不须要将修改的文件经过 git add 命令将其添加到暂存区中,注意!!!!当咱们直接使用 IDE 中的 commit 按钮时,默认是执行 git addgit commit 这两个命令的。

git diff 使用

一样的 git diff 也在顶部,以下图所示:

git_diff_ide.jpg

Git使用快捷键

固然除了上述全部的操做,咱们还可使用ide提供的快捷键进行操做,使用 Alt+ ` (Windows)option + ` (Mac) 的方式,能够获得如下界面:

idea_快捷键汇总.jpg

  1. 对应咱们使用的 git commit
  2. 对应咱们使用的 git diff
  3. 对应咱们使用的 git add

最后

站在巨人的肩膀上,才能看的更远~

相关文章
相关标签/搜索