查找匹配某个'提交次数'的所有git提交

时间:2014-01-24 10:09:53

标签: linux git bash

我使用以下命令生成类似于svn(Subversion)'版本号'的ID(提交次数)。

git rev-list HEAD | wc -l
# With newer git versions you can also use:
git rev-list HEAD --count

我知道这与svn完全不同,特别是我的Git-ID不一定是唯一的。对我的目的来说还是足够好(快速看一下两个版本中的哪一个是最近的)。

现在我的问题:

假设我有ID 2340如何找到与此ID匹配的所有Git修订版(哈希)(提交次数)?

编辑(示例)

*   9c4365c count: 5
|\
| |
| |   
| * b1a9954 count: 2
| |
| |
| |   
* | 7e8831a count: 3
| |
| |
| |   
* | e8cabc4 count: 2
|/
|
|  
* 9ae0137 count: 1

对于ID(计数)2,我想获得e8cabc4和b1a9954。

一个非常低效的解决方案是迭代所有提交并检查该提交的“计数”。如果匹配,请将其添加到解决方案中。

1 个答案:

答案 0 :(得分:0)

这值得的是我在问题中提到的低效解决方案。

#!/bin/bash

MY_COUNT=2340

for COMMIT in `git rev-list HEAD`
do
    CCOUNT=`git rev-list ${COMMIT} --count`
    if [ "${CCOUNT}" == "${MY_COUNT}" ]
    then
        echo $COMMIT
    fi
done

对于具有3000次提交的存储库,大约需要30秒。