git 合并
1. git合并两个仓库代码(主仓库合并到分支仓库)
2.将某分支的某次提交合并到另一个分支
3. 将远程仓库的某次/几次提交合并到另一个仓库
1. git合并两个仓库代码(主仓库合并到分支仓库)
主仓库:opsy:master (仓库名:branch名)
我的仓库:my_opsy:master (仓库名:branch名)
合并步骤:
以下操作步骤均在我的仓库路径下。
1.1 在我的仓库my_opsy:master下,将主仓库的地址或者本地仓库路径添加到自己本地的远程仓库中
//git remote add 仓库名称 远程主仓库地址
~/my_opsy/master$git remote add opsy [email protected]: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 创建远程仓库新的分支master1
这里将远程主仓库的代码在本地新建一个分支,稍后会将这个分支的代码和本地代码merge,这样也就是将主仓库代码和自己仓库的代码merge了
git checkout -b master1 opsy/master
1.4 切换到我的仓库本地分支master
现在本地有两个分支:1个是之前的master ,这个分支的代码就是自己仓库的代码。1个新增的分支master1 这个是主仓库的代码
git checkout master
1.5 合并两个分支(也就是将两个仓库的代码merge)
//git merge 分支名称
git merge master1
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 [email protected]: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
参考文章: