为什么我在执行`git checkout -b 3_1`后丢失了我的主分支?

时间:2016-08-07 12:44:58

标签: git bash version-control

我在win7 64bit中使用Git Bash 2.9.0-64位。

我创建了一个名为lec_yaac的git存储库。这是关于分支主数据的相关信息:

  

wen @wen-PC MINGW64 / d / Git / lec_yaac(master)

执行命令git checkout -b 3_1后,它变为

  

wen @wen-PC MINGW64 / d / Git / lec_yaac(3_1)

我添加并发布了一些文件。

但是当我执行git branch时,它只会显示,

  
      
  • 3_1
  •   

分支主人没什么。

git checkout master返回

  

错误:pathspec'master'与git已知的任何文件都不匹配。

2 个答案:

答案 0 :(得分:2)

当我们通过git init初始化一个空的git repo时,Git会创建一个master分支。但是它现在只是一个默认的ref,指向没有提交,因为还没有任何提交。运行cat .git/HEAD,然后输出ref: refs/heads/master。在git checkout -b 3_1之后,默认引用refs/heads/master将替换为refs/heads/3_1。当我们进行根提交时,refs/heads/3_1将指向它。

在另一种情况下,如果我们在git checkout -b 3_1之前首先提交,我们可以通过master看到3_1git branch

答案 1 :(得分:1)

master分支没什么特别之处。它就像任何其他分支一样。并且分支必然只是指向提交的指针。因此,只要您提交,分支就会出现在图片中。

如果您在自己创建分支之前已经提交了master分支,那么您已经获得了分支。

你做了什么 -
1.创建了一个回购 2.创建并切换到新分支(3_1
3.致力于3_1

你应该做什么 -
1.创建了一个回购 2.承诺master(默认分支名称)
3.创建并切换到新分支(3_1
4.致力于3_1

如果您仍想要一个主分支,只需创建一个。

git checkout -b master

虽然现在这将指向您上一个分支3_1

中的最新提交