git远程存储删除的分支吗?

问题描述 投票:0回答:1

我正在做一些实验来测试我对 git 如何存储分支的理解。

我的理解是,Git 存储所有提交哈希值,因此即使您删除了一个分支,该分支的快照仍然存在于提交哈希值下,只要您知道哈希值,您就可以恢复已删除的分支。

为了测试这一点,我尝试了以下操作(在两台计算机上将存储库推送到 Github):

在 GitHub 上创建存储库

计算机 1 :

  • 克隆仓库
  • 创建分支
    experiment
  • 将文件添加到
    experiment
    并将其推送到GitHub
  • 记下最后一次提交的哈希值
    experiment
  • 通过 :
     删除 
    experiment
  • 分支
  • git push -d origin
    experiment
  • git分支-d
    experiment

电脑2:

  • 克隆仓库
  • 获取/拉动
  • 尝试恢复已删除的分支
    experiment
    ,检查我记下的哈希值

结果

  • computer 2
    我收到错误:pathspec 'd168' 与 git 已知的任何文件不匹配
  • computer 1
    上它有效。

所以我想我的理解是错误的。 如果您本地仍有信息,则只能恢复已删除的分支。即与已删除的

experiment
分支相关的信息仅存在于计算机 1 上?不在远程 GitHub 存储库上?

所以不能在计算机 2 上使用?

git branch commit
1个回答
0
投票

git-clone
的文档指出:“将存储库克隆到新创建的目录中,为克隆存储库中的每个分支创建远程跟踪分支(使用 gitbranch --remotes 可见),并创建 并检查从克隆存储库当前活动分支分叉的初始分支。”

这意味着当您克隆存储库时,它仅复制复制远程上所有分支所需的提交。在你的情况下,提交

d168
位于远程(除非github有非常积极的垃圾收集政策并且已经删除了它),但当前存在的任何分支都不需要它(因为你删除了该分支) ,因此在新克隆期间不会复制它。

尝试

git fetch origin d168....

© www.soinside.com 2019 - 2024. All rights reserved.