当前位置:首页 > 开发工具 > 使用git merge/cherry-pick合并代码(合并远程仓库:github)

使用git merge/cherry-pick合并代码(合并远程仓库:github)

2022年11月10日 10:15:38开发工具8

git 合并

1. git合并两个仓库代码(主仓库合并到分支仓库)

2.将某分支的某次提交合并到另一个分支

3. 将远程仓库的某次/几次提交合并到另一个仓库

 

1. 合并两个仓库代码, 将远程仓库合并到本地仓库

方法一:

1.1 从github上clone远程仓库代码到本地

git clone https://github.com/xx/xxx/xxxxx

1.2 将远程仓库remote打包

git bundle create remote.bundle HEAD master

1.3 将打包好的代码remote.bundle拷贝到要合并的本地仓库路径下

cp -rf ./remote.bundle ~/local/

1.4 将终端切到本地仓库路径下

cd ~/local

1.5 解压刚才拷贝过来的远程代码到本地

git bundle unbundle remote.bundle

1.6 在解压完成后,会有一个SHA1 ID,使用该ID创建本地分支

git checkout -b remote sha1-id

1.7 切回本地分支,然后合并

git checkout local-branch
git merge remote

1.8 如何有冲突,解决冲突,然后执行

git add .
git commit

方法二:

1. git合并两个仓库代码(主仓库合并到分支仓库)

主仓库:opsy:master           (仓库名:branch名)
我的仓库:my_opsy:master (仓库名:branch名)

合并步骤:

以下操作步骤均在我的仓库路径下。

1.0 补充:在添加远程仓库之前,要先在远程仓库上创建一个分支:git checkout master

~/opsy/master$git checkout master

1.1 在我的仓库my_opsy:master下,将主仓库的地址或者本地仓库路径添加到自己本地的远程仓库中

//git remote add 仓库名称 远程主仓库地址
~/my_opsy/master$git remote add opsy git@github.weiwei.com:opsy/code.git

//git remote add 仓库名称 远程主仓库本地路径
~/my_opsy/master$git remote add opsy /home/my_user/opsy/master/

现在git remote 一下可以看见本地有两个远程仓库:

:git remote
opsy
origin

1.2 抓取远程主仓库数据到本地我的仓库中

(远程主仓库分支必须指向master branch,如果没有指向,需要执行git checkout -b master来指向)

//git fetch 仓库名称
git fetch opsy 

1.3 创建远程仓库新的分支remote-master

这里将远程主仓库的代码在本地新建一个分支,稍后会将这个分支的代码和本地代码merge,这样也就是将主仓库代码和自己仓库的代码merge了

git checkout -b remote-master opsy/master

1.4 切换到我的仓库本地分支master

现在本地有两个分支:1个是之前的master ,这个分支的代码就是自己仓库的代码。1个新增的分支remote-master 这个是主仓库的代码

git checkout master

1.5 合并两个分支(也就是将两个仓库的代码merge)

//git merge 分支名称
git merge remote-master

2. 将某分支的某次提交合并到另一个分支

合并步骤:

2.1 切换到开发分支

git checkout develop

2.2 查看要合并的sha1 id

git log --oneline

2.3 切换回主分支,并将要提交的内容合并到主分支

git checkout master
git cherry-pick xxxxx

xxxxx这里为develop开发分支要提交的sha1 id

 

3. 将远程仓库的某一次/几次提交合并到另一个仓库

这里举例两个远程仓库com_bestyii_AAA和com_bestyii_BBB_bd,

将com_bestyii_AAA某一次提交合并到com_bestyii_BBB_bd上边。

 

合并步骤:

3.1 将主仓库的代码添加到自己本地的远程仓库中

通过路径或者git地址,例如

//git remote add 仓库名称 路径
 git remote add com_bestyii_AAA_bj path/to/com_bestyii_AAA

 //git remote add 仓库名称 地址
 git remote add com_bestyii_AAA_bj git@github.weiwei.com:company/com_bestyii_AAA.git

现在git remote 一下可以看见本地有两个远程仓库

com_bestyii_AAA_bj
origin

3.2 抓取仓库数据到本仓库中

git fetch com_bestyii_AAA_bj //git fetch 仓库名称

通过git branch -a看到仓库下的所有分支情况

* master
remotes/com_bestyii_AAA_bj/master
remotes/origin/HEAD -> origin/master
remotes/origin/master

3.3 创建一个新的分支bj_master

这一步是将远程主仓库的代码在本地新建一个分支,稍后会将这个分支的代码和本地代码merge,这样也就是将主仓库代码和自己仓库的代码merge了

 git checkout -b bj_master com_bestyii_AAA_bj/master

3.4 敲 git log 命令,查找需要合并的commit记录,比如commitID:7fcb3defff;

git log --oneline

3.5 切换到master分支,使用 git cherry-pick 7fcb3defff 命令,就把该条commit记录合并到了master分支,这只是在本地合并到了master分支

git checkout master //git checkout 分支名

将下面这一次提交合并到本地仓库
git cherry-pick 7fcb3defff

将下面从sha1 id start 到sha1 id end之间的提交合并到本地分支
git cherry-pick sha1_id_start..sha1_id_end  (不包含start id)
git cherry-pick sha1_id_start^..sha1_id_end (包含start id)

3.6 最后,git push 提交到master远程,至此,就把bj_master分支的这条commit所涉及的更改合并到了master分支

git push origin/xxx

参考文章:

https://www.bestyii.com/topic/40

作者:うちは止水
来源链接:https://blog.csdn.net/zgp2917/article/details/104978440

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/tool/69277.html

标签: Git合并
分享给朋友:

“使用git merge/cherry-pick合并代码(合并远程仓库:github)” 的相关文章

Git常用的基本命令

目录 1.克隆 2.新建分支 3.提交 4.提交到远程仓库 5.下拉 6. 7.切换分支 8.暂存...

关于Git的一些经验总结

目录 1.初始化仓库 2.添加文件到仓库 3.关于版本回退 4.关于修改 5.删除...

Git的安装教程(完成clone一个项目到本地)

Git的安装教程(完成clone一个项目到本地)

官网下载安装包地址:点击进入 https://git-scm.com/download/win 但是官网下载比较慢,我们这里选择国内阿里镜像点击进入 https://npm.taobao.org/mirro...

Git批量删除本地分支

删除分支命令 删除一条分支: git branch -D branchName 删除当前分支外的所有分支: git branch | xargs git branch -d 删除分...

Windows下本地安装git客户端

Windows下本地安装git客户端

转载自:   《 Windows下本地git服务器端安装图文教程 》       关于git     分布式:Git版本控制系统是一个分布式的系统,是...

Git回滚到上一次提交的节点

Git回滚到上一次提交的节点

有这样的情况,在代码提交完成之后, 发现出了问题,需要回滚到上一次提交的节点,怎么做呢。 首先找到git提交的日志 git log 找到最近一次提交,复制提交的信息码,如图: 复制该信息码,然后控制台revert一下,就OK...

GIt在pyCharm的使用教程

GIt在pyCharm的使用教程

GIt在pyCharm的使用教程 目录 GIt在pyCharm的使用教程 (一)Git的安装和配置 (二)在pycharm中配置git (三)创建仓库 (四)一些基础操作 (五)建立远程仓库提交代码   ...

编译安装git

说明:CentOS默认的yum仓库现存的git版本还是比较老的版本,而git官网也没有提供二进制安装包;所以目前在centos系统上安装新版本的git只能通过编译源码安装。 如果系统已经安装了git旧版本可以先卸载:yum remove git, 通过 git versio...

Git是什么?可以用来做什么?如何使用?

Git是什么?可以用来做什么?如何使用?

看完本文之后你能收获什么? 1.知道git是什么,可以用来干什么。 2.会使用git进行版本控制。 3.知道如何继续深度学习git。 git用来干什么? 不知道你工作的时候有没有遇到这样的情况:...

查看git当前tag

Git Tag 标签 git tag 按字母排序显示标签 git tag v1.01 打上v1.01这个标签 git show v1.01 显示这个标签的详情 可以同时打多个tag指向同一个时间点上的版本 git push ori...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。