关于git中的游离分支

游离分支

所谓游离分支,就是处于detached状态的分支,这里显示的不是分支的名称(如,main),而是显示一串hash值:

ubun:~/work/@e9781a5 % gst
HEAD detached at e9781a5
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)

这个分支就是处于游离状态,在该状态下所做的修改不会被记录。

一般我们使用以下命令进入:

git checkout ${hash}

这时我们可以编译任意历史时点的代码,如果要修改代码,还是要用稳定分支。

从游离分支到稳定分支

最简单的方式是使用:

git checkout -b stable_branch_name

这样本地分支就会新建一个名为stable_branch_name的新分支,在此分支上修改并提交即可。

submodule处于游离分支

当子模块处于游离状态时,需要分情况处理。

一般而言,下述几种情况可能导致子模块处于游离状态:

  • 子模块工程已更新,并且项目中子模块也被更新,而你未更新子模块
  • 项目中子模块指向了子模块工程的临时分支,但临时分支被删除(如merge后自动删除)
  • 其他

对于子模块,一般我们希望切换回main即可,本地不会有修改,可以用下面的方法:

# 方法1:创建新的临时分支
git checkout -b test
git checkout main
git pull
git branch -D test # 不可恢复操作,确认test不再需要后执行

# 方法2:无条件切回mian
git fetch origin
git reset --hard origin/main
小结

进入游离分支可能是无意的,如果作了修改,就要使用checkout -b切入新分支,以免修改丢失。

其他情况,当确定不再需要该分支时,可以使用暴力手段,如删除该工程重新拉取代码即可。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值