2022/11/26 4-git detached-HEAD

111 阅读2分钟

2022/11/23 2-git分支中我们已经知道了,当直接通过 git checkout commitID,会产生detached-HEAD,那我们如果在detanched_HEAD上进行新增修改会怎样呢?

在 detached-HEAD 上修改

当我们切换到以前的一个commitID后,我们就处于detached-HEAD模式,此时我们并没有处于一个真正的分支上,当我们切换到其他分支后,当前的假分支就会丢失。 image.png 接着,我们在这个假分支上做一些修改,然后add -> commit提交,且使用git log查看时,当前的假分支确实新增了一条记录。进行到现在,一切都和在一个真正的分支上进行操作一模一样,但是当我们试图切换分支的时候,警告出现了!

切换到 master

image.png 这个警告说的非常清楚,我们在一个detached head上进行了一些修改,但是没有关联到任何分支。如果我们想保存这些修改,需要创建一个新的分支:

git branch detached-head 7e328a5 

执行这句话,我们就创建了一个叫detached-head的分支,并且在这个分支上复制了detached head上的所有修改和提交。

git branch 的第二个参数

git branch new-branch-name commitID

若指定commitID,则新建的分支以这个commitID为最后迁出所以提交。没有指定则默认指向当前分支的最新的一次提交。

// 当前我们处于master分支,所以创建新分支的时候需要带上commitID,否则会根据master上的内容复制一个分支出来
git branch detached-head 7e328a5 
// 如果当我们仍处于detached head上时,我们可以直接迁出一个分支,这个分支的内容和detached head 上的内容一致
git branch detached-head