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
    git的cherry-pick,使用SourceTree遴选_第1张图片
    然后鼠标右击,点击遴选。
    git的cherry-pick,使用SourceTree遴选_第2张图片
    然后点击确定。

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

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

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

你可能感兴趣的:(git,javascript,开发语言)