[实践OK]rpmbuild swoole的最新版本的spec打RPM包文件,在提交Git出现分离头指针记录,头指针分离自 15735cd。git branch -D 大写的D 删除分支,git branch -D dev。

jackxiang 2017-6-27 19:12 | |
内容:
背景:提交代码时出现了这个头指针分离自15735cd的问题,提示让:git branch <新分支名> 1c8c2b1,git branch dev 1c8c2b1,而默认创建分支是:git checkout -b dev,这个git branch dev 1c8c2b1,1c8c2b1前面还有c41273a,再前面就是分离的15735cd,于是,把分离后的两个版本,1c8c2b1 和c41273a 建立新的分支,再合并Merge回Master即可达到和提交一样的,找回这丢失的两次提交。


https://git.oschina.net/swoole/swoole/tree/v1.9.11  
git clone https://git.oschina.net/swoole/swoole.git  #git checkout 1.9 然后编译,因默认clone都是最新版。
#git checkout 1.9
分支 1.9 设置为跟踪来自 origin 的远程分支 1.9。
切换到一个新分支 '1.9'

#git branch -a
* 1.9
  master
  remotes/origin/1.9
  remotes/origin/2.0
  remotes/origin/2.0.1
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/swoole-1.7
  remotes/origin/swoole-1.8

#git status
位于分支 1.9
您的分支与上游分支 'origin/1.9' 一致。
无文件要提交,干净的工作区

rm -rf .git  #干掉没有用的.git,我只要这个版本的源代码并打包成tar.gz,然后作为rpmbuild -ba swoole-php71-1.9.11.el7.x86_64.spec


把 swoole-php71-1.9.11.el7.x86_64.spec 放进Git的Server端仓库出现问题了,如下:
#git status
头指针分离自 15735cd
无文件要提交,干净的工作区

[root@danke-php-memcached-reids-zookeeper_bj_sjs_10_51_77_34:/home/test/rpmbuild/SPECS/centos7/php71]
#git checkout master
警告:您正丢下 2 个提交,未和任何分支关联:

  1c8c2b1 rpm包Swoole升级到最新版本,以及PHP-CP一块升级提交SPEC文件。
  c41273a 删除掉的Swoole版本的Spec文件,添加新的Swoole版本的Spec文件。

如果您想要通过创建新分支保存它们,这可能是一个好时候。
如下操作:

git branch <新分支名> 1c8c2b1

切换到分支 'master'
您的分支与上游分支 'origin/master' 一致。


#git rev-list 15735cd     ##指针在这儿丢失了:头指针分离自 15735cd。
15735cda1005046d7d671a2f1692f0e4d6edb977
bfaa314f6a7a212a386b3117c59a7e8be0c077a0


#git rev-list 1c8c2b1     #这个是最新的但是没有被记录到Git的Master分支服务器仓库里面。
1c8c2b1968cb303ee103fff62272a31a1b43fb57   #没有记录到,Log:1c8c2b1 rpm包Swoole升级到最新版本,以及PHP-CP一块升级提交SPEC文件。
c41273ad0cb545db8b6f1d4eb81b006552c915c9   #没有记录到,Log:c41273a 删除掉的Swoole版本的Spec文件,添加新的Swoole版本的Spec文件。
15735cda1005046d7d671a2f1692f0e4d6edb977   #指针在这儿丢失了:头指针分离自 15735cd。
bfaa314f6a7a212a386b3117c59a7e8be0c077a0  

怎么办?
这时候可以执行git branch <新分支名> 1c8c2b1创建一个新的分支,这个分支是基于头指针分离下修改提交的952770d创建的。
然后,再合并回Master里面去即可。
操作步骤如下:
git branch dev 1c8c2b1

切换过Dev分支,看提交的Log在不?在就回到Master合并:
#git checkout dev
切换到分支 'dev'
果然在,如下:
#git log
commit 1c8c2b1968cb303ee103fff62272a31a1b43fb57
Author: 詹金斯 <13880156868@163.com>
Date:   Thu Jun 1 22:56:43 2017 +0800

    rpm包Swoole升级到最新版本,以及PHP-CP一块升级提交SPEC文件。

commit c41273ad0cb545db8b6f1d4eb81b006552c915c9
Author: 詹金斯 <13880156868@163.com>
Date:   Thu Jun 1 20:31:59 2017 +0800

    删除掉的Swoole版本的Spec文件,添加新的Swoole版本的Spec文件。

回到Master,直接合并到Master分支,如下:
Merge branch 'dev'
Master的头指针出现:头指针分离自 15735cd,新建立Dev分支,git branch dev 1c8c2b1,合并回Master来。 ----这一行是注释,后Vim保存即可。
# 请输入一个提交信息以解释此合并的必要性,尤其是将一个更新后的上游分支
# 合并到主题分支。
#
# 以 '#' 开头的行将被忽略,而且空提交说明将会终止提交。

保存后,跳到这儿了:
#git merge dev
自动合并 centos7/php71/swoole-php71-1.9.11.el7.x86_64.spec
Merge made by the 'recursive' strategy.
centos7/php71/php-cp-php71-1.5.0.el7.x86_64.spec                               |  2 +-
...swoole-php71-1.9.10.el7.x86_64.spec => swoole-php71-1.9.11.el7.x86_64.spec} | 10 +++++-----
centos7/tomcat-7.0.77.el6.x86_64.spec                                          |  1 -
3 files changed, 6 insertions(+), 7 deletions(-)
rename centos7/php71/{swoole-php71-1.9.10.el7.x86_64.spec => swoole-php71-1.9.11.el7.x86_64.spec} (89%)


再确定合并及注释也Ok了,如下:
#git log
commit 432fbac58b19eb6a799d356b82d087a5340a1411
Merge: 78dab85 1c8c2b1
Author: 詹金斯 <13880156868@163.com>
Date:   Thu Jun 1 23:24:33 2017 +0800

    Merge branch 'dev'
    Master的头指针出现:头指针分离自 15735cd,新建立Dev分支,git branch dev 1c8c2b1,合并回Master来。

成功!
git branch -D 大写的D 删除分支,git branch -D dev:
#git branch -D dev
已删除分支 dev(曾为 1c8c2b1)。
参考:http://blog.csdn.net/yuelengloulan/article/details/72823420

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/9288/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]