以下命令无法检出this commit:
$ git clone git@github.com:DefinitelyTyped/DefinitelyTyped.git
$ cd DefinitelyTyped
$ git checkout e90424c424ef9087d0589234e9e9cd0140bab0d7
fatal: reference is not a tree: e90424c424ef9087d0589234e9e9cd0140bab0d7
尝试按照以下advice given here结果进行操作:
$ git fetch origin e90424c424ef9087d0589234e9e9cd0140bab0d7
$ echo $?
1
这次失败是GitHub / GitHub上的大型回购特有的吗?我的git版本是2.10.1。
** 修改 **
$ git fetch origin e90424c424ef9087d0589234e9e9cd0140bab0d7:refs/remotes/origin/foo-commit
$ echo $?
1
$ git cat-file -p e90424c424ef9087d0589234e9e9cd0140bab0d7
fatal: Not a valid object name e90424c424ef9087d0589234e9e9cd0140bab0d7
$ git branch -a --contains e90424c424ef9087d0589234e9e9cd0140bab0d7
error: no such commit e90424c424ef9087d0589234e9e9cd0140bab0d7
$ git reset e90424c424ef9087d0589234e9e9cd0140bab0d7
fatal: Could not parse object 'e90424c424ef9087d0589234e9e9cd0140bab0d7'.
答案 0 :(得分:2)
如果存储库已重新定位,则可能会发生您所看到的行为。您可以通过将提交推送到远程存储库,然后使用git commit --amend
更新它并(强制)推送更新的存储库来自行复制。
旧的提交ID将继续存在于远程存储库中,直到运行某种垃圾收集,但由于它无法从任何现有引用中访问,因此它不会包含在git clone
操作中。
答案 1 :(得分:2)
我怀疑无法从任何引用(分支或标记)访问提交,因此服务器不会将其包含在它发送给您的包文件中。
在我的测试中,只有提交已经在您的本地仓库中才能获取SHA1的特定提交(据我所知,这不太有用;它会更新public function getReviewsAction()
{
$serializer = $this->get('jms_serializer');
$em = $this->getDoctrine()->getManager();
$reviews = $em->getRepository('BookMainBundle:Review')->findAll();
$serializer->serialize($reviews, 'json', SerializationContext::create()->setGroups(array('Default', 'books')));
return $this->handleView($this->view($reviews));
}
我猜)...我甚至不知道它会在那种情况下起作用。
如果没有直接访问远程仓库,我不知道要恢复的程序。 (我不计算单独手动获取每个对象并在本地重建提交 - 以及任何缺失的历史记录的想法;即使它可以在理论上完成,也是完全不切实际的。)
一项小小的研究建议尝试这个命令:
FETCH_HEAD
我无法使用任何协议对其进行测试,但使用https,它无法使用该协议;但你可能会试一试。
答案 2 :(得分:0)
您可以检查e90424c424ef9087d0589234e9e9cd0140bab0d7 commit是否是当前分支的一部分。
git branch -a --contains e90424c424ef9087d0589234e9e9cd0140bab0d7
通过这个,您可以看到包含此哈希提交的所有分支的列表。
此外,“checkout”选项适用于不使用散列提交的分支名称。使用带有checkout的哈希提交会导致“分离头状态”或“致命:引用不是树”。
如果要导航到当前分支中的特定提交,请使用带有软/硬选项的git reset。
git reset e90424c424ef9087d0589234e9e9cd0140bab0d7
git reset --hard e90424c424ef9087d0589234e9e9cd0140bab0d7
这会将您的HEAD指针更新为特定提交。