git的cherry-pick,使用SourceTree遴选

需求:目前有一个开发分支dev,然后要在dev分支的基础上,检出两个新的分支,做为发版分支,这个分支的功能完全一样,只有logo,title,项目的配置信息不同。怎么在dev分支上开发了新的功能之后,合并到这两个发版分支,并不覆盖这两个分支中的项目配置信息。
步骤过程如下:

  1. 首先新建了一个git仓库
  2. 添加文件 a.js
    console.log('a');
    提交记录:添加a文件
  3. 在该提交记录的基础上检出新分支 【dev】
  4. 添加文件 b.js
    console.log('b');
    提交记录:添加b文件
  5. 在 a.js文件中添加内容如:
    console.log('a');
    console.log('new_a');
    
  6. 在此基础上检出新分支 【new_a】
  7. 然后重新切换到【dev】分支,并修改a文件
    console.log('a');
    console.log('new_a');
    console.log('new_b');
    
  8. 在此基础上检出新分支 【new_b]
  9. 此时
    【new_a]分支下的a文件的内容如下:
    console.log('a');
    console.log('new_a');
    
    【new_b】分支下的a文件的内容如下:
    console.log('a');
    console.log('new_a');
    console.log('new_b');
    
    【dev】分支下的a文件的内容如下:
    console.log('a');
    console.log('new_a');
    console.log('new_b');
    

需求:此时,我想在【dev】分支上新开发功能,然后只将改动的新功能分别合并到【new_a】分支 和 【new_b】分支。

  1. 如果此时,我在【dev】分支上开发了新的功能,如新建 c.js 文件console.log('c');提交记录:添加c文件

  2. 然后分别合并到【new_a】分支【new_b】分支,此时,虽然新开发的功能 c 文件合并过来了,但是【new_a】分支中的 a 文件就会被覆盖。

    a文件内容变化如下:
    【dev】分支 合并 marge 到【new_a】分支之前:

    console.log('a');
    console.log('new_a');
    

    【dev】分支合并 marge 到 【new_a】分支之后:a文件内容

    console.log('a');
    console.log('new_a');
    console.log('new_b');
    

    这样,就不符合我的需求。我只想将记录:提交c文件,这个更改到【new_a】分支和【new_b】分支。

  3. 这个时候,就要用到 遴选 这个功能。而不是直接采用 合并
    SourceTree中的操作如下:
    在【new_a】分支下,选中该条要遴选的这条提交记录(该条记录是在【dev】分支上提交的记录),如步骤10
    在这里插入图片描述
    然后鼠标右击,点击遴选。
    在这里插入图片描述
    然后点击确定。

  4. 此时,【new_a】分支上就有了刚刚【dev】分支的提交记录,而不会覆盖 a 文件的内容,此时,a文件的内容为:

    console.log('a');
    console.log('new_a');
    

多个提交记录cherry-pick
git cherry-pick <commit-id>
使用命令git log查看commit-id
一次可以将一个连续的时间序列内的commit,设定一个开始和技术的commit,进行cherry-pick操作
git cherry-pick <start-commit-id>...<end-commit-id>
这样就可以将start-commit-id到end-commit-id之间所有的commit都遴选提交了,但这个是左开右闭的区间,不包含开始的提交id,要想包含使用git cherry-pcik <start-commit-id>^...<end-commid-id>使用^标记一下。
使用git log —pretty=oneline来查看当前分支最近的提交,注意,git命令中,对于commit-id的操作,都只需要使用前五位就可以了。
git cherry-pick c3d25^...9f19f
在这里插入图片描述

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值