我正在尝试理解一个项目,它有助于通过使用gitk来查看它的演变。我所做的是检查第一次提交,理解代码,运行测试,转到下一次提交并重复。我当前的工作流程是通过它的散列来签出提交
git checkout 79cd6但我想要的是另一个分支,在那里我可以执行我自己的更改,并允许我合并来自主分支的提交,而不需要找到提交散列。理想化工作流程:
git checkout -b <newbranch> <first commit id of master>
git <command to move head of current branch to next commit of master>发布于 2013-10-11 07:31:59
我知道这是一个有点老的问题,但我想做同样的事情,并找到一个答案,所以我想分享一下。
for commit in $(git rev-list master --reverse)
do
git checkout $commit
read
done在一个窗口中完成此操作。它将从您的初始提交开始,并在您每次按回车键时前进一次。然后在不同的shell中进行测试等。
它可以完美地处理线性历史,但我不太确定它将如何处理合并之类的事情。我相信这是合理的,但你的里程可能会有一点不同。
发布于 2010-07-21 23:09:09
将其另存为~/bin/git-next或路径中的其他位置:
#!/bin/bash
git co $(git rev-list --children --all | awk "/^$(git rev-parse @\{0})/ { print \$2; }")这将检出当前修订的第一个子项。
它在大型回购上会非常慢,但它可以完成这项工作。
您可以根据需要对其进行修改以处理分支。
发布于 2010-07-21 12:28:33
您可以编写一个小的shell脚本。一个脚本将运行git log --pretty=oneline | awk '{print $1;}'。第二个脚本(称为step或其他什么)将使用head、tail、wc -l。然后使用tail读取文件的最后一行,找出文件中有多少行,并从文件中删除最后一行。丑陋,当然,但它可以做这件事。:) (如果你想让它看起来不那么难看,它可以使用truncate(1)去掉文件的最后一行,而不是总是创建新的临时文件。)
https://stackoverflow.com/questions/3296260
复制相似问题