本地未推送分支的提交是否可被远程仓库访问?
关于本地提交A、B的远程访问性问题
核心结论
提交A和B无法被远程仓库的访问者获取,其他人克隆远程仓库后尝试git checkout A会直接失败。
具体原因
- Git的推送操作基于分支:你仅推送了
master分支到远程,包含A、B提交的test分支从未被推送到远程仓库。这两个提交属于本地仓库独有的对象,远程仓库的对象数据库中完全没有它们的哈希值和内容。 - 克隆远程仓库时,只会拉取远程存在的分支(此处仅
master)及其关联的提交历史(C、D以及master原有的历史),本地独有的A、B提交不会被包含在克隆下来的仓库中。 - 执行
git checkout A时,Git会在当前仓库的对象数据库中查找对应哈希的提交,由于克隆的仓库里没有这个提交记录,会返回类似如下的错误:error: pathspec 'A' did not match any file(s) known to git.
例外情况
只有当你主动执行git push origin test将test分支推送到远程,或者通过特殊操作(如推送孤立提交,通常远程仓库会限制这类操作)把A、B提交推送到远程后,其他人才有可能访问到这两个提交。
内容的提问来源于stack exchange,提问作者Inertial Ignorance
相关产品推荐
相关产品推荐

