未在master分支做初始提交后master消失的原因及Git多起点疑问
Git空分支切换问题解答
一、为什么master分支会“消失”?
Git里的分支本质就是指向提交的指针,只有当这个指针关联了至少一个提交时,Git才会在.git/refs/heads/目录下生成对应的文件,持久化保存这个分支的信息。
刚初始化仓库时,master只是HEAD临时指向的一个“空架子”,没有任何提交跟它绑定,所以它根本没被持久化存储。当你创建新分支并切换过去后,原来的空master因为没有对应的存储文件,Git就找不到它了,自然会报fatal: invalid reference: master这个错误。
二、Git必须单个提交起点吗?能不能给不同分支设多个起点?
当然可以给不同分支设置多个独立的提交起点,Git完全支持多根提交的仓库。你之前的问题是操作方式不对,不该保留空分支折腾。
正确的多起点分支创建方式是为每个分支单独完成初始提交:
- 先初始化仓库:
git init - 创建并切换到第一个分支:
git checkout -b branchA - 添加文件并提交,给branchA建立根提交:
echo "branchA 初始提交" > a.txt git add a.txt git commit -m "init branchA" - 再创建并切换到第二个分支:
git checkout -b branchB - 添加不同文件并提交,给branchB建立独立的根提交:
echo "branchB 初始提交" > b.txt git add b.txt git commit -m "init branchB"
这样branchA和branchB就拥有完全独立的提交历史起点,后续可以在各自分支上独立开发。
内容的提问来源于stack exchange,提问作者Urooj
相关产品推荐
相关产品推荐

