使用rebase -i

时间:2016-07-18 20:33:00

标签: git bash rebase

我想知道是否有可能确定在给定项目中已经重新定位和压缩的提交数量。我可以满足所有的篮板,而不仅仅是那些进行壁球运动的人。

我实际上是在尝试编写一个可以计算用户为给定项目运行的rebase数量的函数。

例如,如果我的项目包含三个提交,其中包含以下哈希123456789999。  我希望能够确定提交1234最初是提交11112222但是已经重新组合并压缩在一起以进行提交1234

同样,我可以通过运行git log | grep -i merge来找到通过合并创建的提交。

理想情况下,这将是一个类似于刚刚提到的命令的单线程。

根据我自己的经验,将两个或多个提交压缩到一个结果中,重新生成的提交包含由换行符连接的所有提交消息(假设在重新定位期间没有编辑任何提交消息)。有了这些信息,似乎不可能。然而,我问,因为我希望能够做到这一点,因为它将极大地帮助我的项目。

TLDR:查找由rebase创建的提交的一个班轮。 Git是否做了特别的事情来标记重新提交的提交?

1 个答案:

答案 0 :(得分:1)

我能够使用git reflog完成此任务。

git reflog向我提供所有操作,包括rebase

典型输出如下:

some-computer:test_project marcusshepherd$ git reflog
On branch master
nothing to commit, working directory clean
47066c8 HEAD@{0}: rebase -i (finish): returning to refs/heads/master
47066c8 HEAD@{1}: rebase -i (squash): add bar.txt
ae35743 HEAD@{2}: rebase -i (start): checkout HEAD~2
7c5b185 HEAD@{3}: commit: edit bar.txt
ae35743 HEAD@{4}: commit: add bar.txt
a9b6aa1 HEAD@{5}: commit (initial): init

通过这些信息,我能够找到包含字符串rebasefinish的所有命令,然后对它们进行计数。这给了我任何给定项目的正确数量的rebase。

必须说我很高兴能解决这个问题。