附上教程——《ProGit 2


配置信息

Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:

  • /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 –system 选项的 git config 时,它会从此文件读写配置变量。
  • ~/.gitconfig~/.config/git/config 文件:只针对当前用户。 可以传递 –global 选项让 Git 读写此文件。
  • 当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。

你可能会看到重复的变量名,因为 Git 会从不同的文件中读取同一个配置(例如:/etc/gitconfig~/.gitconfig)。 这种情况下,Git 会使用它找到的每一个变量的最后一个配置。

你可以通过输入 git config <key>: 来检查 Git 的某一项配置

$ git config user.name
John Doe

获取帮助

若你使用 Git 时需要获取帮助,有三种方法可以找到 Git 命令的使用手册:

$ git help <verb>
$ git <verb> --help
$ man git-<verb>

例如,要想获得 config 命令的手册,执行

$ git help config

这些命令很棒,因为你随时随地可以使用而无需联网。

你还可以尝试在 Freenode IRC 服务器( irc.freenode.net )的 #git 或 #github 频道寻求帮助。


查看提交历史

  • git log -p -2:用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交
  • 如果你想看到每次提交的简略的统计信息,你可以使用 --stat 选项
  • git log --pretty=oneline--pretyt 指定使用不同格式的方式展示,子选项有onelineshortfullfuller
  • git log --pretty=format:"%h - %an, %ar : %s":定制要显示的记录格式
    • %H 提交对象(commit)的完整哈希字串
    • %h 提交对象的简短哈希字串
    • %T 树对象(tree)的完整哈希字串
    • %t 树对象的简短哈希字串
    • %P 父对象(parent)的完整哈希字串
    • %p 父对象的简短哈希字串
    • %an 作者(author)的名字
    • %ae 作者的电子邮件地址
    • %ad 作者修订日期(可以用 –date= 选项定制格式)
    • %ar 作者修订日期,按多久以前的方式显示
    • %cn 提交者(committer)的名字
    • %ce 提交者的电子邮件地址
    • %cd 提交日期
    • %cr 提交日期,按多久以前的方式显示
    • %s 提交说明

你一定奇怪 作者 和 提交者 之间究竟有何差别, 其实作者指的是实际作出修改的人,提交者指的是最后将此工作成果提交到仓库的人。 所以,当你为某个项目发布补丁,然后某个核心成员将你的补丁并入项目时,你就是作者,而那个核心成员就是提交者。

  • 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(后跟指定格式)。
  • 另外还有按照时间作限制的选项,比如 --since--until 也很有用,如git log --since=2.weeks。这个命令可以在多种格式下工作,比如说具体的某一天 "2008-01-15",或者是相对地多久以前 "2 years 1 day 3 minutes ago"

还可以给出若干搜索条件,列出符合的提交。 用 –author 选项显示指定作者的提交,用 –grep 选项搜索提交说明中的关键字。 (请注意,如果要得到同时满足这两个选项搜索条件的提交,就必须用 –all-match 选项。否则,满足任意一个条件的提交都会被匹配出来)

另一个非常有用的筛选选项是 -S,可以列出那些添加或移除了某些字符串的提交。 比如说,你想找出添加或移除了某一个特定函数的引用的提交,你可以这样使用:

$ git log -Sfunction_name

最后一个很实用的 git log 选项是路径(path), 如果只关心某些文件或者目录的历史提交,可以在 git log 选项的最后指定它们的路径。 因为是放在最后位置上的选项,所以用两个短划线(–)隔开之前的选项和后面限定的路径名。

  • 限制 git log 输出的选项

    • -(n) 仅显示最近的 n 条提交
    • --since, --after 仅显示指定时间之后的提交。
    • --until, --before 仅显示指定时间之前的提交。
    • --author 仅显示指定作者相关的提交。
    • --committer 仅显示指定提交者相关的提交。
    • --grep 仅显示含指定关键字的提交
    • -S 仅显示添加或移除了某个关键字的提交

举例:如果要查看 Git 仓库中,2008 年 10 月期间,Junio Hamano 提交的但未合并的测试文件,可以用下面的查询命令:

$ git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \
--before="2008-11-01" --no-merges -- t/

零碎笔记

  • git status -s 或者git status --short:简略信息输出
  • git diff --cached:查看已经暂存的内容的不同(或者git diff --staged
  • git difftool:用Araxis、emerge、vimdiff等软件输出diff分析结果,git difftool --tool-help 查看系统支持的git diff插件
  • git commit -v:详细知道做了哪些修改,将在随后打开的编辑器中显示。退出编辑器时,git将丢弃那些产生的注释(包括简单注释和详细注释,好像是这么理解的吧)
  • git commit -a -m "":可以省略add环节
  • git rm --cached 文件:删除版本库中的文件,但磁盘上仍然保留该文件(可使用glob表达式)
  • git mv file_from file_to:更名/移动

不想写了,直接看链接的教程吧。

git学习笔记2——ProGit2的更多相关文章

  1. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  2. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  3. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

  4. git 学习笔记6--remote & log

    git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...

  5. Git学习笔记---协作的一般流程

    一般的操作流程 1.pull 王小坤与另一个同事张大炮一起开发一个项目,张大炮昨天修改了数据库读写的api,优化了执行速度,并把read()函数改名成了Read(),下午下班之前把这些代码push到服 ...

  6. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

  7. [转]Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  8. GIT学习笔记(1):创建版本库

    GIT学习笔记(1):创建版本库 创建版本库 1.创建合适目录并初始化为仓库 版本库即需要交由Git进行版本控制的目录,其下所有文件的修改.删除,Git都能跟踪还原. 说明:初始化后,当前目录下会多出 ...

  9. GIT学习笔记(5):变基

    GIT学习笔记(5):变基rebase 变基 引入变基 在Git中整合来自不同分支的修改主要有两种方法:merge以及rebase. 整合分支最容易的方法是merge,他会把两个分支的最新快照以及两者 ...

随机推荐

  1. 记录线上一次线程hang住问题

    线上发现执行某特定任务在某个特定时间点后不再work.该任务由线程池中线程执行定时周期性调度,根据日志查看无任何异常.从代码研判应该无关定时任务框架,因为对提交的定时任务做了wrap,会将异常都cat ...

  2. forever start app.js 启动node时,服务访问一次后第二次就不能访问了

    开始总是找不到原因,是因为在启动服务时,没有设置日志文件.突然想到了是不是forever安装的有问题,就重新安装forever , 这时候提示系统 no space left on device  , ...

  3. 【洛谷】【动态规划/01背包】P1734 最大约数和

    [题目描述:] 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大. [输入格式:] 输入一个正整数S. [输出格式:] 输出最大的约数之和. [算法分析:] 01背包,每个数 ...

  4. 离线安装Cloudera Manager 5和CDH5(最新版5.9.3) 完全教程(三)重新分配磁盘空间(可选)

    一.查看文件系统 [root@master ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_master-lv_ ...

  5. kafka监控kafka-eagle 容器化配置

    由于kafka.zk 集群已经部署在k8s中,  kafka的服务名 kafka-hs, zk的服务名为:zk-cs ,对kafka进行监控,所以需要把监控部署到k8s中,选择使用kafka-eagl ...

  6. 转载 SpringMVC详解(二)------详细架构

    目录 1.SpringMVC 详细介绍 2.SpringMVC 处理请求流程 3.配置前端控制器 4.配置处理器适配器 5.编写 Handler 5.配置处理器映射器 6.配置视图解析器 7.Disp ...

  7. FreeRTOS的任务非运行态

    当FreeRTOS启动任务调度器以后,任务调度器会在心跳中断函数中确定下一个要运行的任务,如果任务调度器仅仅依靠任务优先级来判断该运行哪个任务,这样会造成低优先级的任务根本没法运行,因为FreeRTO ...

  8. Android学习之基础知识三(Android日志工具Log的使用)

    Android中的日志工具Log(android.util.Log): 1.打印日志的方法(按级别从低到高排序): Log.v():级别verbose,用于打印最为烦琐,意义最小的日志 Log.d() ...

  9. Sql Server插入数据并返回自增ID,@@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的区别(转载)

    预备知识:SQL Server的IDENTITY关键字IDENTITY关键字代表的是一个函数,而不是identity属性.在access里边没有这个函数,所以在access不能用这个语句.语法:ide ...

  10. 【小程序】页面无法更新tabbar角标属性时

    在小程序论坛上找答案,一同问了,截图如下