为什么在给出哈希值的情况下git log会抛出致命的坏对象?

时间:2018-10-04 16:00:15

标签: git shell

我有一个shell脚本,可以获取和导出这些调用的变量: 1. dev env“ build id”, 2. dev env“ git commit hash”, 3.测试环境“ git commit hash”, 4.开发环境版本 5.测试环境版本

export DEV_BUILD_ID=$(curl -k https://my-website-dev/version.txt | grep BUILD_ID=|cut -f2 -d"=")
echo 'This is DEV BUILD ID: '$DEV_BUILD_ID

export DEV_HASH=$(curl -k https://my-website-dev/version.txt | grep GIT_COMMIT=|cut -f2 -d"=")
echo 'This is DEV HASH: '$DEV_HASH 

export TST_HASH=$(curl -k https://my-website-test/version.txt | grep GIT_COMMIT=|cut -f2 -d"=")
echo 'This is TEST HASH: '$TST_HASH 

export DEV_VERSION=$(git log -1 --pretty=%h $DEV_HASH)
echo 'This is DEV VERSION: ' $DEV_VERSION

export TST_VERSION=$(git log -1 --pretty=%h $TST_HASH)
echo 'This is TEST VERSION: ' $TST_VERSION

在所有这些之后,我使用以下脚本记录了自上次部署到测试环境以来的开发版本的修订:

echo 'Logging the output to word doc...'
git log $TST_VERSION^..$DEV_VERSION > "C:/TEMP/Test_Build_Changes_$DEV_BUILD_ID.DOC"

我面临的问题是,今天脚本突然抛出了这个错误:

$ C:/Users/ssharipo/Documents/Tuts/git_revision_practice.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   372  100   372    0     0    722      0 --:--:-- --:--:-- --:--:--   745
This is DEV BUILD ID: 23
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   372  100   372    0     0    745      0 --:--:-- --:--:-- --:--:--   745
This is DEV HASH: 6c663e00a6e808476fe4cf4b7fa0af999ef27f5f
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   372  100   372    0     0    681      0 --:--:-- --:--:-- --:--:--   768
This is TEST HASH: 6c663e00a6e808476fe4cf4b7fa0af999ef27f5f
fatal: bad object 6c663e00a6e808476fe4cf4b7fa0af999ef27f5f
This is DEV VERSION:
fatal: bad object 6c663e00a6e808476fe4cf4b7fa0af999ef27f5f
This is TEST VERSION:
Logging the output to word doc...
fatal: bad revision '^..'

有什么想法可以解决此问题吗?

2 个答案:

答案 0 :(得分:1)

您的shell脚本有一个基本缺陷:它调用某个网站,并要求该网站提供Git对象的哈希ID,如该网站上记录的那样。然后,获取了该哈希ID后,您要求您的 Git向您显示该对象。

如果您的Git由于其他原因拥有该对象,则Git可以向您显示该对象。但是在那种情况下,您可能会想知道为什么您首先要访问某个网站。如果您的Git 没有没有对象,则该网站有关Git哈希ID的信息将无用,并且应该想知道为什么您首先要咨询某个网站

打个比方,这就像问鲍勃杰克在做什么,然后听到鲍勃的声音,问弗雷德向你展示杰克在做什么。 (这个比喻是否真的成立取决于您的情况,您没有真正描述过。)

如何修复问题也不是很明显。如果您正在访问的网站是从其他Git存储库中获取其Git哈希ID,则可能使用的方法是让您的Git在该其他Git上运行git fetch,同时获取和< / em>所有对象。 (使用相同的类比,这就像直接去杰克找出他在做什么。)

答案 1 :(得分:-2)

当我运行此脚本时,我被检出到Master的分支。但是此脚本需要针对执行构建的分支运行。因此,我签出了Dev分支并运行了该脚本,一切正常。