Git基础二

作者: 拙峰朽木 | 来源:发表于2017-06-13 15:45 被阅读23次

在上篇文章中我们,介绍了git status, git init ,git add ,git commit 这四个命令
通过这四个命令,我们成功的初始化了git的仓库,并提交了第一次更改。
下面我们看看这么查询我们的提交历史呢。

git log :输出历史

这个命令主要是输出commit的记录,也就是用户的提交历史。

frc@frc:~/GitHub/study/GitStudy$ git log
commit 7024df8d77c8b5c13673f809b88a3533e67afd42
Author: fengrongcheng <fengrongcheng2017@outlook.com>
Date:   Tue Jun 13 12:23:41 2017 +0800

    test for git rm

commit 009f82b5c68e89408b4e3435f4bad176ef3cc847
Author: fengrongcheng <fengrongcheng2017@outlook.com>
Date:   Tue Jun 13 12:08:02 2017 +0800

    test git rm

commit 26de8cfad13bb7e19dafc00a892ca8e786cfadc0
Author: fengrongcheng <fengrongcheng2017@outlook.com>
Date:   Tue Jun 13 11:46:38 2017 +0800

    test git commit -a -m

commit 3d0a19a7dfce6fb7c627d5965098a355247ee49c
Author: fengrongcheng <fengrongcheng2017@outlook.com>
Date:   Tue Jun 13 11:35:11 2017 +0800

    test git diff

这个命令会按时间顺序列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明。

commit_id

commit  5d7589415b65d51bd18cbd3817f1b4f5d837ff00 

5d7589415b65d51bd18cbd3817f1b4f5d837ff00是一个SHA-1Hash值,它是对那个commit是Git仓库中内容和头信息(Header)的一个校验和(checksum),Linux kernel开创者和Git的开发者——Linus说,Git使用了SHA-1并非是为了安全性,而是为了数据的完整性;它可以保证,在很多年后,你重新checkout某个commit时,一定是它多年前的当时的状态,完全一摸一样,完全值得信任。在Git中,根据commit的SHA-1值(40个十六进制数字)进行了简单的划分目录,以前2位数字作为目录名,其下面是剩余38位数字组成的一个文件名.

git log -size

只查看最近的size条commit 信息

frc@frc:~/GitHub/study/GitStudy$ git log -2
commit 7024df8d77c8b5c13673f809b88a3533e67afd42
Author: fengrongcheng <fengrongcheng2017@outlook.com>
Date:   Tue Jun 13 12:23:41 2017 +0800

    test for git rm

commit 009f82b5c68e89408b4e3435f4bad176ef3cc847
Author: fengrongcheng <fengrongcheng2017@outlook.com>
Date:   Tue Jun 13 12:08:02 2017 +0800

    test git rm

git log -p

显示每次提交的内容差异

frc@frc:~/GitHub/study/GitStudy$ git log -p -2
commit 7024df8d77c8b5c13673f809b88a3533e67afd42
Author: fengrongcheng <fengrongcheng2017@outlook.com>
Date:   Tue Jun 13 12:23:41 2017 +0800

    test for git rm

diff --git a/testForGitRm.txt b/testForGitRm.txt
new file mode 100644
index 0000000..6ebc240
--- /dev/null
+++ b/testForGitRm.txt
@@ -0,0 +1,2 @@
+
+test for git rm

commit 009f82b5c68e89408b4e3435f4bad176ef3cc847
Author: fengrongcheng <fengrongcheng2017@outlook.com>
Date:   Tue Jun 13 12:08:02 2017 +0800

    test git rm

diff --git a/REDME.text b/REDME.text
index 55070be..322d181 100644

git log --stat

每次提交的简略的统计信息

frc@frc:~/GitHub/study/GitStudy$ git log --stat -2
commit 7024df8d77c8b5c13673f809b88a3533e67afd42
Author: fengrongcheng <fengrongcheng2017@outlook.com>
Date:   Tue Jun 13 12:23:41 2017 +0800

    test for git rm

 testForGitRm.txt | 2 ++
 1 file changed, 2 insertions(+)

commit 009f82b5c68e89408b4e3435f4bad176ef3cc847
Author: fengrongcheng <fengrongcheng2017@outlook.com>
Date:   Tue Jun 13 12:08:02 2017 +0800

    test git rm

 REDME.text | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

git log --pretty

输出log的样式
之前的log输出形式太复杂了,其实我们只需要知道commit_id,commit_msg就行了,正常情况下作者邮箱只有在看别人代码时可能有用。我们使用git log --pretty 来定义个一行显示的:

frc@frc:~/GitHub/study/GitStudy$ git log --pretty=oneline
7024df8d77c8b5c13673f809b88a3533e67afd42 test for git rm
009f82b5c68e89408b4e3435f4bad176ef3cc847 test git rm
26de8cfad13bb7e19dafc00a892ca8e786cfadc0 test git commit -a -m
3d0a19a7dfce6fb7c627d5965098a355247ee49c test git diff
f697f00003fb4a848b51ead4e4286a84a7edadad   first commit again
5d7589415b65d51bd18cbd3817f1b4f5d837ff00 first commitC

各种筛选功能

--since, --after 仅显示指定时间之后的提交。
--author仅显示指定作者相关的提交。
--committer仅显示指定提交者相关的提交。
--grep仅显示含指定关键字的提交交。
-S仅显示添加或移除了某个关键字的提交

撤销操作

git commit --amend

作为一个资深的程序猿肯定碰到一个问题,就是你在开发过程中,写到某处commit了假设叫A,然后接着开发过一会又要提交B,这时你发现这2个commit可以归一个,作为一个有洁癖的你该怎么办呢,这里就需要用到git commit --amend了,最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。

git checkout -- file

我现在对REDME文件进行修改,突然觉得之前修改的是不对的,我要还原成没修改之前的样子该怎么办呢,其实 在使用git status时,log日志早就是提示我们了,那就是用使用 "git checkout -- file..." 丢弃工作区的改动,我们来试试。
没有加入暂缓区前 :

frc@frc:~/GitHub/study/GitStudy$ vi REDME.text 
frc@frc:~/GitHub/study/GitStudy$ git status
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <file>..." 更新要提交的内容)
  (使用 "git checkout -- <file>..." 丢弃工作区的改动)

    修改:     REDME.text

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
frc@frc:~/GitHub/study/GitStudy$ git checkout -- REDME.text 
frc@frc:~/GitHub/study/GitStudy$ git status
位于分支 master
无文件要提交,干净的工作区
frc@frc:~/GitHub/study/GitStudy$ 

之前的情况是没有add的,那么如果已经加入暂缓区的该怎么办呢?

git reset HEAD file

其实取消加入暂缓区的方法,在使用git status的时候也已经告诉我们了
看下面的操作流程 vi REDME.txt其实是去修改文件了

frc@frc:~/GitHub/study/GitStudy$ vi REDME.text 
frc@frc:~/GitHub/study/GitStudy$ git status
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <file>..." 更新要提交的内容)
  (使用 "git checkout -- <file>..." 丢弃工作区的改动)

    修改:     REDME.text

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
frc@frc:~/GitHub/study/GitStudy$ git add REDME.text 
frc@frc:~/GitHub/study/GitStudy$ git status
位于分支 master
要提交的变更:
  (使用 "git reset HEAD <file>..." 撤出暂存区)

    修改:     REDME.text

frc@frc:~/GitHub/study/GitStudy$ git reset HEAD REDME.text 
重置后撤出暂存区的变更:
M   REDME.text
frc@frc:~/GitHub/study/GitStudy$ git status
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <file>..." 更新要提交的内容)
  (使用 "git checkout -- <file>..." 丢弃工作区的改动)

    修改:     REDME.text

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

so,是不是感觉看log日志是很有帮助的。

git checkout

上面的一些列操作都是针对尚未commit 的改动,如果我已经commit,或者说我现在想把代码回退到某个commit之前该怎么办呢。那么现在一直出现的commit_id就派上用场了。由于commit_id是唯一标示,它其实就代表了你这次的提交(比commit _msg靠谱多了),所以我们可以以它为标记来检索代码。
不过git checkout比较多还是单来一篇吧

相关文章

  • git资源学习

    git资源学习 Git详解之一 Git起步 Git详解之二 Git基础 Git详解之三 Git分支 Git详解之四...

  • Git基础二

    在上篇文章中我们,介绍了git status, git init ,git add ,git commit 这四个...

  • Git基础二

    一.撤销操作1.取消暂存已暂存 ---> 修改未暂存 2.取消修改已修改 ---> 撤销修改 二.远程仓库的使用远...

  • git整体学习

    基础 1. git ... 3. git rebase 第二种合并分支的方法是 git rebase。Rebase...

  • 2.Git初步

    Git是什么 Git是什么 Git基础 Git基础 1. 下载安装Git GIT官网 安装好后,按win+R 输入...

  • Git && Github 笔记

    (Git : 版本控制器 , Github : 代码仓库) 一、 基础配置 二 、git 的理论知识 四个工作区域...

  • Git 常用的命令

    1、查看帮助:git --help 2、查看某一命令帮助:`git add -h 二、基础配置 需要配置:user...

  • 二、GIT基础-获取Git仓库

    2.1、获取Git仓库 1)在现在目录中初始化仓库 进入要使用Git进行管理的目录,执行如下命令: 该命令将创建一...

  • Git基础命令(二)

    查看版本库与工作区的区别 查看所有文件的区别,默认本地最新版本库 查看某个文件的区别,默认本地最新版本库 查看本地...

  • git 基础命令(二)

    前一篇讲了git 的本地操作命令。git基础命令(一)。现在这篇主要讲下合并,拉取和推送。 git checkou...

网友评论

    本文标题:Git基础二

    本文链接:https://www.haomeiwen.com/subject/bjgdqxtx.html