V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
zo
V2EX  ›  git

git 有什么办法可以比对任意两次提交中一个作者修改了哪些文件吗?

  •  
  •   zo · 2017-06-09 16:33:13 +08:00 · 3803 次点击
    这是一个创建于 2751 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如比对当前 HEAD 和上一个版本更新时我修改了哪些文件

    17 条回复    2017-06-10 11:19:09 +08:00
    zo
        1
    zo  
    OP
       2017-06-09 16:38:00 +08:00
    或者可以通过 grep 过滤出来?
    jiangbingo
        2
    jiangbingo  
       2017-06-09 16:39:46 +08:00
    git reflog 查看 hash id 号
    git diff id1 id2
    cxbig
        3
    cxbig  
       2017-06-09 16:41:12 +08:00
    具体实现看 git diff 和 git log 文档,这种问题 Google 比较快。
    zo
        4
    zo  
    OP
       2017-06-09 16:43:17 +08:00
    @jiangbingo 这个方法并不能过滤某一个作者的提交。假设开发团体够大的话,想要找到自己提交的东西也是挺难的
    zo
        5
    zo  
    OP
       2017-06-09 16:44:07 +08:00
    @cxbig 我找过了,但是我找不到
    cxbig
        6
    cxbig  
       2017-06-09 16:45:58 +08:00
    @zo 怎么可能。。。
    试试这个:
    git --no-pager log --author=YOUR_NAME | head -10
    blakejia
        7
    blakejia  
       2017-06-09 16:49:01 +08:00
    我觉得 git blame 应该贴合你需求一点。但是一个命令估计也解决不了。
    blakejia
        8
    blakejia  
       2017-06-09 16:51:00 +08:00
    应该是 git log 拿到文件列表,和 Hash ID,然后去对应文件找你有动过的那些行,做个列表打印出来。得写个小工具了
    cxbig
        9
    cxbig  
       2017-06-09 16:52:49 +08:00
    @zo
    参数怎么用说的明明白白啊:
    https://git-scm.com/docs/git-log#git-log---authorltpatterngt
    可以加--branches 过滤分支
    可以加--before 和--after 过滤提交时间

    先用 git log 搜你提交的历史,拿到 hash 再用 git diff 比较版本间文件改动
    zo
        10
    zo  
    OP
       2017-06-09 17:09:08 +08:00
    @blakejia 我去看看 git blame
    zo
        11
    zo  
    OP
       2017-06-09 17:09:52 +08:00
    @cxbig git diff 显示的是所有人的更改,时间久了的话,找不到哪些是自己提交的。。。。
    wlsnx
        12
    wlsnx  
       2017-06-09 17:19:04 +08:00
    git log 有 --stat 可以显示修改了哪些文件,-p 可以看到修改内容
    momocraft
        13
    momocraft  
       2017-06-09 17:19:29 +08:00
    git show commit1..commit2 --author=你
    zo
        14
    zo  
    OP
       2017-06-09 17:21:08 +08:00
    @wlsnx 用--name-only 就可以了。这样可以直接拿来用
    SoloCompany
        15
    SoloCompany  
       2017-06-10 00:26:30 +08:00
    @zo 算是自问自答了吗?结合 #13 就是

    git show commit1..commit2 --author=你 --pretty= --name-only | sort -u
    mingyun
        16
    mingyun  
       2017-06-10 09:25:18 +08:00
    @SoloCompany 学习了
    jiangbingo
        17
    jiangbingo  
       2017-06-10 11:19:09 +08:00
    根本需求在于快速查看代码提交者的 commit,那就直接使用 Pcharm 的 version control 吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2800 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:57 · PVG 14:57 · LAX 22:57 · JFK 01:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.