码迷,mamicode.com
首页 > 其他好文 > 详细

git log

时间:2017-01-11 12:00:13      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:file   mit   for   移除   rda   ranch   定位   asc   .com   

git log:
一、不带参数
    1.如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者、提交日期、和提交说明
    2.如果记录过多,则按Page Up、Page Down、↓、↑来控制显示
    3.按q退出历史记录列表

二、显示参数
-p:按补丁显示每个更新间的差异,比下一条- -stat命令信息更全
--stat:显示每次更新的修改文件的统计信息,每个提交都列出了修改过的文件,以及其中添加和移除的行数,并在最后列出所有增减行数小计
--shortstat:只显示--stat中最后的行数添加修改删除统计
--name-only:尽在已修改的提交信息后显示文件清单
--name-status:显示新增、修改和删除的文件清单
--abbrev-commit:仅显示SHA-1的前几个字符,而非所有的40个字符
--relative-date:使用较短的相对时间显示(例如:"two weeks ago")
--graph:显示ASCII图形表示的分支合并历史


三、筛选参数:
1.按数量:-n, 显示前n条log


2.按日期:--after/--since --before/--until
(1) 比如git log --after="2014-7-1”,显示2014年7月1号之后的commit(包含7月1号)
(2) 后边的日期还可以用相对时间表示,比如"1 week ago"和”yesterday",比如git log --after="yesterday"


3.按作者:
(1)--author="balfish", 显示balfish贡献的commit.注意:作者名不需要精确匹配,只需要包含就行了
(2)可以使用正则表达式,比如git log --author="John\|Mary”,搜索Marry和John贡献的commit
(3)这个--author不仅包含名还包含email, 所以你可以用这个搜索email


4.按commit描述
(1)git log --grep="JRA-224"
(2)可以传入-i用来忽略大小写
(3)如果想同时使用--grep和--author,必须在附加一个--all-match参数


5.按文件
--(空格)或[没有]
    比如:git log -- foo.py bar.py ,只返回和foo.py或bar.py相关的commit
    这里的--是告诉Git后面的参数是文件路径而不是branch的名字. 如果后面的文件路径不会和某个branch产生混淆, 你可以省略--,比如git log foo.py
    另外,后边的路径还支持正则,比如:git log  *install.md 是,指定项目路径下的所有以install.md结尾的文件的提交历史
    另外,文件名应该放到参数的最后位置,通常在前面加上--并用空格隔开表示是文件
    另外,git log file/ 查看file文件夹下所有文件的提交记录


6.按分支 --
    --branchName branchName为任意一个分支名字,查看某个分支上的提交记录
    需要放到参数中的最后位置处
    如果分支名与文件名相同,系统会提示错 误,可通过--选项来指定给定的参数是分支名还是文件名
        比如:在当前分支中有一个名为v1的文件,同时还存在一个名为v1的分支
        git log v1 -- 此时的v1代表的是分支名字(--后边是空的)
        git log -- v1 此时的v1代表的是名为v1的文件
        git log v1 -- v1 代表v1分支下的v1文件


7.按内容
-S"<string>"、-G"<string>"
    有时你想搜索和新增或删除某行代码相关的commit. 可以使用这条命令
    假设你想知道Hello, World!这句话是什么时候加入到项目里去的,可以用:git log -S"Hello,World!"
    另外:如果你想使用正则表达式去匹配而不是字符串, 那么你可以使用-G代替-S.
    这是一个非常有用的debug工具, 使用他你可以定位所有跟某行代码相关的commit. 甚至可以查看某行是什么时候被copy的, 什么时候移到另外一个文件中去的
    注:-S后没有"=",与查询内容之间也没有空格符


8.按范围
    git log <since>..<until>
        这个命令可以查看某个范围的commit
        这个命令非常有用当你使用branch做为range参数的时候. 能很方便的显示2个branch之间的不同
        比如:git log master..feature,master..feature这个range包含了在feature有而在master没有的所有commit,同样,如果是feature..master包含所有master有但是feature没有的commit
        另外,如果是三个点,表示或的意思:git log master...test 查询master或test分支中的提交记录


9.过滤掉merge commit

    --no-merges
        默认情况下git log会输出merge commit.  你可以通过--no-merges标记来过滤掉merge commit,git log --no-merges
        另外,如果你只对merge commit感兴趣可以使用—merges,git log --merges


10.按commit
    git log commit:查询commit之前的记录,包含commit
    git log commit1 commit2:查询commit1与commit2之间的记录,包括commit1和commit2
    git log commit1..commit2:同上,但是不包括commit1
        其中,commit可以是提交哈希值的简写模式,也可以使用HEAD代替
            HEAD代表最后一次提交,HEAD^为最后一个提交的父提交,等同于HEAD~1; HEAD~2代表倒数第二次提交

git log

标签:file   mit   for   移除   rda   ranch   定位   asc   .com   

原文地址:http://www.cnblogs.com/balfish/p/6272984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!