将 git 存储库中的所有提交转换为按顺序命名的分支?

Convert all commits in a git repository to branches named sequentially?

我正在尝试找出一个庞大的代码库。

平时我运行

git log

然后我为每个提交创建一个分支并按顺序调查每个提交。 有没有办法为每个提交创建一个分支并按顺序命名它们,如 01、02 ...等。

这个 bash 脚本可以解决问题,为每次提交创建一个从 B1 开始的名为 Bn 的分支。我假设你不想做你的整个回购,而是一些 A..B 范围(不包括 A,包括 B),我在这里任意设置在 HEAD~10..HEAD。

A=HEAD~10
B=HEAD
counter=0
for commit in `git rev-list --reverse $A..$B`; do
   counter=$((counter + 1))
   git branch B$counter $commit
done

注意 --reverse 的使用:没有它,这个循环会将分支 B1 分配给最近的提交;有了它,循环将 B1 分配给最旧的提交。

现在,如果要标记当前分支中的所有提交,请将 for 行替换为:

for commit in `git rev-list --reverse`; do

如果你想标记回购中的所有提交,在每个分支中,使用此 for 行:

for commit in `git rev-list --reverse --all`; do