V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
neptune15
V2EX  ›  程序员

关于 Git 在不同 commit 之间切换的问题

  •  
  •   neptune15 · 2020-07-24 12:04:52 +08:00 · 4080 次点击
    这是一个创建于 1577 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 需求

    阅读一个开源项目的时候希望能够看到作者思考 /项目发展的过程,所以打算从最开始的 commit 挨个 /跳着看一下

    • 现有的解决办法

    可以 git checkout first_id 回到第一个 commit,但是需要 git checkout HEAD@{1} 返回,git log 拿到第二个 commit 的 id,再去 git checkout second_id 阅读第二次提交

    sof 上找到了下面的命令看起来可以在 commit 之间前后跳转

    function n() {
        git log --reverse --pretty=%H master | grep -A 1 $(git rev-parse HEAD) | tail -n1 | xargs git checkout
    }
    
    function p() {
        git checkout HEAD^1
    }
    
    
    • 问题
    1. 没能找到 Git 原生的解决方案,是这个需求不成立?
    2. 有没有更好的解决方案(比如可以前后跳转,也支持回到初始的 commit 之后还可以前往任意 commit )?
    第 1 条附言  ·  2020-07-24 16:40:12 +08:00

    GUI工具的话,@ysc3839 推荐的gitk可以满足commit之间跳转的需求

    “gitk 就能满足需求吧,列表中显示所有 commit,右键 reset branch to current commit 就能切换。”

    22 条回复    2020-07-24 20:26:45 +08:00
    maninfog
        1
    maninfog  
       2020-07-24 12:18:25 +08:00 via Android
    seki
        2
    seki  
       2020-07-24 12:23:20 +08:00
    一般都是 diff 着来看?
    Shawlaw
        3
    Shawlaw  
       2020-07-24 13:19:25 +08:00 via iPhone
    像这种,git rebase -i 我感觉就能满足你的需求,可以去了解一下。
    renmu123
        4
    renmu123  
       2020-07-24 13:24:24 +08:00 via Android
    我用 pycharm 自带的 git 可以 reset hard 到第一个 commit 后再直接选择下一个 commit,还支持 diff
    hankai17
        5
    hankai17  
       2020-07-24 13:59:53 +08:00
    利用分离头指针看很麻烦
    msg7086
        6
    msg7086  
       2020-07-24 14:19:42 +08:00
    花几分钟找个好用的 GUI 吧。双击切换 commit 不香吗。
    neptune15
        7
    neptune15  
    OP
       2020-07-24 14:22:23 +08:00
    @maninfog 跟上面贴的差不太多,不过多谢了
    neptune15
        8
    neptune15  
    OP
       2020-07-24 14:23:20 +08:00
    @msg7086 恩,好久之前用过小乌龟
    neptune15
        9
    neptune15  
    OP
       2020-07-24 14:23:44 +08:00
    @Shawlaw thx
    neptune15
        10
    neptune15  
    OP
       2020-07-24 14:24:50 +08:00
    @renmu123 恩,那 JetBrains 家的估计都可以
    silentsee
        11
    silentsee  
       2020-07-24 15:19:22 +08:00
    推荐一个 GUI,fork https://fork.dev
    neptune15
        12
    neptune15  
    OP
       2020-07-24 16:05:50 +08:00
    @silentsee thx!
    ysc3839
        13
    ysc3839  
       2020-07-24 16:14:03 +08:00 via Android
    gitk 就能满足需求吧,列表中显示所有 commit,右键 reset branch to current commit 就能切换。
    RandomJames
        14
    RandomJames  
       2020-07-24 16:23:13 +08:00   ❤️ 1
    其实按照 tag 和 change log 来看就好了,并不一定要看每次提交。如果要看单次提交,用 git diff 比较多点 :)
    neptune15
        15
    neptune15  
    OP
       2020-07-24 16:29:35 +08:00
    @RandomJames 恩是的,挨个确实没啥必要,只是感觉 git 在 commit 之间的跳转不是很方便
    neptune15
        16
    neptune15  
    OP
       2020-07-24 16:36:33 +08:00
    @ysc3839 试了一下,跳转确实很方便,看起来对应的是 git reset,不过可以看到所有的 commit
    idealhs
        17
    idealhs  
       2020-07-24 16:42:06 +08:00
    下个 GUI 点啊点看着很方便,很少见用命令行的大神
    340244120w
        18
    340244120w  
       2020-07-24 17:02:43 +08:00
    合格的 git 玩家都选择从 commit checkout 一个新分支
    darksword21
        19
    darksword21  
       2020-07-24 17:36:11 +08:00
    magit 欢迎你
    guoqiao
        20
    guoqiao  
       2020-07-24 18:06:07 +08:00
    你需要 tig 这个工具
    Madcrow
        21
    Madcrow  
       2020-07-24 18:15:41 +08:00 via Android
    vscode+gitlens
    mxalbert1996
        22
    mxalbert1996  
       2020-07-24 20:26:45 +08:00 via Android
    这个难道不是任何 GUI 都能轻松完成的吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1025 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 19:01 · PVG 03:01 · LAX 11:01 · JFK 14:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.