zoukankan      html  css  js  c++  java
  • 分离头指针

    背景知识

    detached HEAD state,分离头指针,即HEAD指针直接指向提交记录的情况
    正常情况下,HEAD应指向某一分支
    如果执行了git checkout tag名git checkout 远端分支名git checkout 提交记录哈希值,则HEAD会指向指向某一提交记录,这就是detached HEAD state

    实验

    先用git log和图形化软件git log查看一下开始实验前test仓库的提交记录树

    $ git log
    commit 314b5494eb06a9963f4e6f97075f2354c8a15f13 (HEAD -> master)
    Author: MilesGO <164173218@qq.com>
    Date:   Sun Jun 9 17:20:40 2019 +0800
    
        add main2.cpp
    
    commit 12c2c80788dcd74a1cd739157c0a1011514d36b2
    Author: MilesGO <164173218@qq.com>
    Date:   Sun Jun 9 17:11:48 2019 +0800
    
        add src/main.cpp
    
    commit 4a1d75425a4cd5c3e206a4c69415c59802175039
    Author: MilesGO <164173218@qq.com>
    Date:   Sun Jun 9 17:00:08 2019 +0800
    
        modify README
    
    commit 29c07152991c7b3ee41f9cb5ac1eff1f26610665
    Author: MilesGO <164173218@qq.com>
    Date:   Sun Jun 9 16:52:41 2019 +0800
    
        add README
    

    用git-fork查看之后,可以看到整棵提交记录树是线性的
    我们直接用哈希值检出到倒数第二次提交

    $ git checkout 12c2c8
    Note: checking out '12c2c8'.
    
    You are in 'detached HEAD' state. You can look around, make experimental
    changes and commit them, and you can discard any commits you make in this
    state without impacting any branches by performing another checkout.
    
    If you want to create a new branch to retain commits you create, you may
    do so (now or later) by using -b with the checkout command again. Example:
    
      git checkout -b <new-branch-name>
    
    HEAD is now at 12c2c80 add src/main.cpp
    

    翻译一下上面的内容,您正处于分离头指针状态,你可以做一些实验性的改动并且提交它们,但是这些提交都会被丢弃,除非你用一个分支指向它们
    当前这个分支下还没有main2.cpp文件,我们添加这个文件

    $ echo 'hello world again' >> main2.cpp
    $ git add main2.cpp
    $ git commit -m 'add main2.cpp again'
    [detached HEAD 11ed7f1] add main2.cpp again
     1 file changed, 1 insertion(+)
     create mode 100644 main2.cpp
    
    $ git checkout master
    Warning: you are leaving 1 commit behind, not connected to
    any of your branches:
    
      11ed7f1 add main2.cpp again
    
    If you want to keep it by creating a new branch, this may be a good time
    to do so with:
    
     git branch <new-branch-name> 11ed7f1
    
    Switched to branch 'master'
    

    翻译一下上面的内容,你把1个未用分支指向的提交记录给落掉了,其哈希值为11ed7f1,如果你想要保留这个提交,则请用git branch <new-branch-name> 11ed7f1指令创建1个新的分支并指向这个提交记录

    $ git branch -av
    * master 314b549 add main2.cpp
    
    git branch pick 11ed7f1
    
    $ git branch -av
    * master 314b549 add main2.cpp
      pick   11ed7f1 add main2.cpp again
      
    
  • 相关阅读:
    结对-五子棋-测试过程
    结队-五子棋游戏-项目进度
    团队-象棋游戏-代码设计规范
    团队-象棋游戏-开发环境搭建过程
    课后作业-阅读任务-阅读提问-1
    20170914-构建之法:现代软件工程-阅读笔记
    结对-五子棋游戏-开发环境搭建过程
    团队-象棋-成员简介及分工
    结对-五子棋-需求分析
    个人-GIT使用方法
  • 原文地址:https://www.cnblogs.com/milesgo517/p/10994171.html
Copyright © 2011-2022 走看看