git log 查看自己修改的行数_Git 笔记 day2

本篇文章记录使用 Git 完成各种工作是将会用到的各种就基本命令。

获取 Git 仓库

将当前目录初始化为仓库

$ git init

新建目录并初始化为仓库

$ git init xxx

将目录初始化为仓库后将创建一个 .git 子目录,仓库的骨干,项目里的文件还没有被跟踪。

初始化仓库后常用的命令:

$ git add readme$ git add *.py$ git add *$ git add *-log$ git commit -m 'initial project version'

克隆现有的仓库

$ git clone https://github.com/skynet/git-demo

也可以自定义仓库的名字

$ git clone https://github.com/skynet/git-demo xxx

记录每次更新到仓库

工作目录中的文件有两种状态:已跟踪和未跟踪。已跟踪的文件是指那些被纳入了版本控制的文件,在上一次的快照中有它们的记录,在工作一段时间后,它们的状态可能是未修改,已修改或已放入暂存区。

工作目录中除已跟踪文件外的其他文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有被放入暂存区。

文件的状态变化周期:

3ff113816a9f03bc491e04ff5242f069.png

文件状态变化周期

可以使用 git status 查看工作区状态,git status -s 或 --short 以简洁的方式插查看状态:

$ git status -s   M READMEMM RakefileA  lib/git.rbM  lib/simplegit.rb?? LICENSE.txt

新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区的文件前面有 A 标记,修改过的文件前面有M 标记。输出中有两栏,左侧指明了暂存区的状态,右侧指明了工作区的状态。

忽略文件

可以创建 .gitignore 文件,在其中列出不想被跟踪的文件。

文件 .gitignore 的格式规范如下:

  • 所有空行或者以 # 开头的行都会被 Git 忽略。
  • 可以使用标准的 blob 模式匹配,它会递归地应用到各工作区中。
  • 匹配模式可以以 / 开头防止递归。
  • 匹配模式可以以 / 结尾指定目录。
  • 以 !开头排除忽略。
  • ** 匹配任意中间目录。

查看提交历史

$ git log 

-p 或 --patch 显示差异,也可以限制数量,如 -2 ,使用 --stat 选项查看简略统计信息

$ git log -p -2$ git log --stat

git log 常用选项:

-p 按补丁格式显示每个提交引入的差异。

--stat 显示每次提交的文件修改统计信息。

--shortstat 只显示 --stat 中最后的行数修改添加移除统计。

--name-only 仅在提交信息后显示已修改的文件清单。

--name-status 显示新增、修改、删除的文件清单。

--abbrev-commit 仅显示 SHA-1 校验和所有 40 个字符中的前几个字符。

--relative-date 使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago”)。

--graph 在日志旁以 ASCII 图形显示分支与合并历史。

--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline、short、full、fuller 和 format(用来定义自己的格式)。

--oneline --pretty=oneline --abbrev-commit 合用的简写。

除了定制输出格式的选项之外,git log 还有许多非常实用的限制输出长度的选项,也就是只输出一部分的提交。

$ git log --since=2.weeks

一个非常有用的过滤器是 -S(俗称“pickaxe”选项,取“用鹤嘴锄在土里捡石头”之意), 它接受一个字符串参数,并且只会显示那些添加或删除了该字符串的提交。 假设你想找出添加或删除了对某一个特定函数的引用的提交,可以调用:

$ git log -S function_name

限制 git log 输出的选项:

-仅显示最近的 n 条提交。

--since, --after 仅显示指定时间之后的提交。

--until, --before 仅显示指定时间之前的提交。

--author 仅显示作者匹配指定字符串的提交。

--committer 仅显示提交者匹配指定字符串的提交。

--grep 仅显示提交说明中包含指定字符串的提交。

-S 仅显示添加或删除内容匹配指定字符串的提交。

一个实际的例子,如果要在 Git 源码库中查看 Junio Hamano 在 2008 年 10 月其间, 除了合并提交之外的哪一个提交修改了测试文件,可以使用下面的命令:

$ git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01"  --before="2008-11-01" --no-merges -- t/

记录中可能有为数不少的合并提交,它们所包含的信息通常并不多。 为了避免显示的合并提交弄乱历史记录,可以为 log 加上 --no-merges 选项。

其它基础命令

$ git diff$ git diff --staged$ git rm xxx$ git rm --staged  xxx$ git mv xxx yyy$ git commit --amend$ git commit -a -m "xxxx"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值