我有一个项目有一系列的提交。这个项目是一个教程,每次提交都代表着教程中的一个小步骤。可以从第一次提交开始,一个接一个地“播放”下一次提交,以便向观众解释教程?
如果我执行git log,那么我会得到以下输出:
$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date: Thu Nov 4 18:59:41 2010 -0400
Third step of the tutorial, blah blah blah...
commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date: Thu Nov 4 05:13:39 2010 -0400
Second step of the tutorial, more blah blah blah...
commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date: Thu Nov 4 00:55:06 2010 -0400
First step of the tutorial, blah blah...编辑:我知道我可以使用checkout来执行每一次提交。一旦我在第一次提交时,就有一个简单的命令(除了checkout 25eee4c之外)可以继续执行,而不需要知道下一次提交的散列?
发布于 2021-03-02 22:19:27
如果您想在每个阶段与存储库的内容进行交互,您可以这样做:
old_head=$(git name-rev --name-only HEAD)
for commit in $(git rev-list --reverse HEAD); do
git checkout -q $commit
git show --quiet
PS1="${commit:0:7}> " bash --norc || break
done
git checkout -q $old_head在这里,我们使用git rev-list --reverse HEAD以相反的顺序(最早的最先)获取提交列表。然后,对于每个提交,我们(a)检查提交,(b)显示日志消息,(c)以提交id作为提示启动一个shell。
退出shell (键入exit或CTRL-D)继续执行下一次提交,或键入exit 1中止进程。
https://stackoverflow.com/questions/66441024
复制相似问题