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

2020-07-24 12:04:52 +08:00
 neptune15

阅读一个开源项目的时候希望能够看到作者思考 /项目发展的过程,所以打算从最开始的 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 )?
4086 次点击
所在节点    程序员
22 条回复
maninfog
2020-07-24 12:18:25 +08:00
seki
2020-07-24 12:23:20 +08:00
一般都是 diff 着来看?
Shawlaw
2020-07-24 13:19:25 +08:00
像这种,git rebase -i 我感觉就能满足你的需求,可以去了解一下。
renmu123
2020-07-24 13:24:24 +08:00
我用 pycharm 自带的 git 可以 reset hard 到第一个 commit 后再直接选择下一个 commit,还支持 diff
hankai17
2020-07-24 13:59:53 +08:00
利用分离头指针看很麻烦
msg7086
2020-07-24 14:19:42 +08:00
花几分钟找个好用的 GUI 吧。双击切换 commit 不香吗。
neptune15
2020-07-24 14:22:23 +08:00
@maninfog 跟上面贴的差不太多,不过多谢了
neptune15
2020-07-24 14:23:20 +08:00
@msg7086 恩,好久之前用过小乌龟
neptune15
2020-07-24 14:23:44 +08:00
@Shawlaw thx
neptune15
2020-07-24 14:24:50 +08:00
@renmu123 恩,那 JetBrains 家的估计都可以
silentsee
2020-07-24 15:19:22 +08:00
推荐一个 GUI,fork https://fork.dev
neptune15
2020-07-24 16:05:50 +08:00
@silentsee thx!
ysc3839
2020-07-24 16:14:03 +08:00
gitk 就能满足需求吧,列表中显示所有 commit,右键 reset branch to current commit 就能切换。
RandomJames
2020-07-24 16:23:13 +08:00
其实按照 tag 和 change log 来看就好了,并不一定要看每次提交。如果要看单次提交,用 git diff 比较多点 :)
neptune15
2020-07-24 16:29:35 +08:00
@RandomJames 恩是的,挨个确实没啥必要,只是感觉 git 在 commit 之间的跳转不是很方便
neptune15
2020-07-24 16:36:33 +08:00
@ysc3839 试了一下,跳转确实很方便,看起来对应的是 git reset,不过可以看到所有的 commit
idealhs
2020-07-24 16:42:06 +08:00
下个 GUI 点啊点看着很方便,很少见用命令行的大神
340244120w
2020-07-24 17:02:43 +08:00
合格的 git 玩家都选择从 commit checkout 一个新分支
darksword21
2020-07-24 17:36:11 +08:00
magit 欢迎你
guoqiao
2020-07-24 18:06:07 +08:00
你需要 tig 这个工具

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692767

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX