我们在git diff的时候发现有这个问题。
问题背景
在git clone的时候指定了depth=1,然后git reset hard到对应的id上面。
因为我们要做按需编译,要将对应的diff文件检测出来,发现什么文件修改了,才编译,所以又git fetch --depth 2
,再执行
git diff --name-only HEAD HEAD~1
然后就有这个问题。
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.
首先解释一下这个是什么意思,
说这个HEAD~1这个参数不知道什么意思,因为当前未知的版本或者路径不在工作树中。
将查看,上面git fetch --depth 2
下载下来是0
Total 0 (delta 0), reused 0 (delta 0)
经过查询,说是我可能head指针指向错误了,解决方案是
git checkout FETCH_HEAD
然后再去
git diff --name-only HEAD HEAD~1
就能解决。
那么这个FETCH_HEAD是什么意思呢。
FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。
为什么会报错了,应该是git到了一个不知道的空间去了,我们需要把空间重新置为FETCH_HEAD,这样才能看到历史diff的代码变更。