多个git项目库之间的cherry

阅读: 评论:0

多个git项目库之间的cherry

多个git项目库之间的cherry

文章目录

  • 多个git项目库之间的cherry-pick操作
    • 1、目的:把A库master分支的某次提交commit id 提交到 B库feature分支
    • 2、在A库代码目录中通过git log 查看需要的commit id
    • 3、切换到B库的代码目录中
      • 1)****B库: 在本地添加另一个A库
      • 2)****B库: 通过 `git remote -v` 查看是否添加成功
      • 3)****B库: 通过 `git fetch devorigin` 将A库的该分支信息同步到本地
      • 4)完成 fetch 就已经可以开始`cherry-pick`操作了
      • 5)同时本地B库feature分支也会生成一条 commit 记录
      • 6) 最后将本地合并的代码 `git push` 到B库线上仓库
  • cherry-pick
    • 基本用法
    • cherry pick转移多个提交
    • cherry pick 配置项
    • cherry pick 代码冲突

多个git项目库之间的cherry-pick操作

从git上的A库 fork 到 B库,然后A库和B库进行独自的开发。开发中也会遇到一些问题,例如A库有重要的代码修复,老办法是再去B库修改一次,操作起来不太方便。这里就尝试从多个不同git库中进行cherry-pick。

1、目的:把A库master分支的某次提交commit id 提交到 B库feature分支

2、在A库代码目录中通过git log 查看需要的commit id

3、切换到B库的代码目录中

1)****B库: 在本地添加另一个A库

git remote add devorigin

2)****B库: 通过 git remote -v 查看是否添加成功

3)****B库: 通过 git fetch devorigin 将A库的该分支信息同步到本地

这里简单概况下git fetch 和 git pull 的区别
git fetch 是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中
git pull 则是将远程主机的最新内容拉取到本地并且直接进行合并,即:git pull = git fetch + git merge这样可能会产生冲突,需要手动解决

4)完成 fetch 就已经可以开始cherry-pick操作了

****B库:git cherry-pick 279f6669f485a522471d5b4c42c828be5df47b4e

如果发生代码冲突会提示代码冲突目录地址:

合并成功的提示:

上图的提示就说明成功的把A库master分支的某次 commit 提交 合并 到B库feature分支上了。

5)同时本地B库feature分支也会生成一条 commit 记录


此时如果发现合并错误可以通过 git reset --hard 'commit id' 回退到上一次commit的版本

6) 最后将本地合并的代码 git push 到B库线上仓库

cherry-pick

基本用法

git cherry-pick :将指定的提交 commit id 合并到其他分支

git cherry-pick commitid

举个例子,代码仓库有master和feature两个分支

    a - b - c - d   Mastere - f - g Feature

将提交 f 合并到 master 分支

# 切换到 master 分支
$ git checkout master# Cherry pick 操作
$ git cherry-pick f

完成上述操作后:代码库就变成了👇🏻,可以看到 master 分支的最新提交增加了一个 f

    a - b - c - d - f   Mastere - f - g Feature

cherry pick转移多个提交

cherry-pick 支持一次转移多个提交

$ git cherry-pick <commitid1> <commitid2>

上述命令是将 1 和 2 两次提交应用到当前分支,同时也会再当前分支生成一条新的 commit 提交。
如果要转移一系列的连续提交,可以使用下面的简洁语法

$ git cherry-pick commit1.mit9 

上述的命令可以转移 > 1 && ≤ 9 的所有提交。他们必须按照正确的顺序放置:提交 commit1 必须早于提交 commit9,否则命令将失效,但不会报错。
特别注意,上述的命令并不包含 commit1。如果要实现 ≥1 && ≤9,可以使用下面的语法

$ git cherry-pick commit1^.mit9 

cherry pick 配置项

常用配置:
1、-e,--edit

打开外部编辑器,编辑提交信息。

2、-n,--no-commit

只更新工作区和暂存区,不产生新的提交。

3、-x

在提交信息的末尾追加一行(cherry picked from commit …),方便以后查到这个提交是如何产生的。

4、-s,--signoff

在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作。

cherry pick 代码冲突

1、--continue

用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。

$ git cherry-pick --continue

2、--abort

发生代码冲突后,放弃合并,回到操作前的样子。

$ git cherry-pick --abort

3、--quit

发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。

$ git cherry-pick --quit

本文发布于:2024-02-01 13:16:24,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170676458636860.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:多个   项目   git   cherry
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23