i使用以下命令生成ID(Count of Count)类似于SVN(subversion)'修订号码'。
git rev-list HEAD | wc -l
# With newer git versions you can also use:
git rev-list HEAD --count
我知道这与SVN中的不完全相同,尤其是我的git-ids并不一定是唯一的。仍然足以满足我的目的(快速区分两种版本中的哪个是最近的)。
现在我的问题:
假设我有ID 2340我如何找到与此ID相匹配的所有git修订(哈希)?
?编辑(示例)
* 9c4365c count: 5
|
| |
| |
| * b1a9954 count: 2
| |
| |
| |
* | 7e8831a count: 3
| |
| |
| |
* | e8cabc4 count: 2
|/
|
|
* 9ae0137 count: 1
对于ID(count)2我想获得E8CABC4和B1A9954。
一个非常低效的解决方案将是在所有提交中迭代并检查该提交的"计数"。如果匹配,请将其添加到解决方案中。
对于它值得的是我在问题中提到的效率低下的解决方案。
#!/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秒。