git|git 合并两个远程分支
git 合并两个远程分支 场景:
最初只有一个分支,随着业务发展,分化出不同的分支,分化出的分支又要合并最初分支的修改。
实例:
github 上 fork 别人的项目,别人的项目有更新,自己 fork 的分支也有修改(不能删除后重新fork),需要合并原分支的修改(可能也是 merge 其他人的修改)。
实验准备:
本机已安装好 git 命令行,且配置好 ssh 密钥,可以向自己的 gitbub 提交。
实验材料:
分支地址:
-
git@github.com:tianqing2117/flexbox-layout.git
自己的仓库地址,有 pull、push 的权限,最终也是更新到这个仓库; -
https://github.com/google/flexbox-layout.git
fork 的原项目地址,有 pull 的权限;
两年前 fork 了 google 的项目,google 这两年持续在更新这个项目,一直没有合并 google 的更新。
文章图片
更新前,自己仓库的状态
文章图片
更新前,google 仓库的状态
操作步骤
- 本地 clone 自己的远程仓库
git clone git@github.com:tianqing2117/flexbox-layout.git
clone 后需要 cd 到 flexbox-layout 文件夹里才进入 git 项目目录。
- 添加原项目地址为远程仓库地址
git remote add google git@github.com:google/flexbox-layout.git
这里给这个远程仓库地址起名叫 google
- 新建本地分支接受 google 仓库地址的内容
git checkout -b tmp
这里创建了一个本地分支叫 tmp ,并切换过去了
- 从 google 远程分支更新修改到 本地 tmp 分支
git pull google master:tmp
这里把 google 远程仓库的修改同步到了本地 tmp 分支
- 切换回本地 master 分支
git checkout master
因为这个分支的内容是和自己的远程仓库保持同步的
- 从本地 tmp 分支合并修改到 master 分支
git merge tmp
相当于把 google 远程仓库的变更合并到本地 master 分支
- 提交变更到自己的远程仓库
git push origin master
实验结果
文章图片
更新后自己远程仓库 相关命令详解
- git clone
git clone <版本库的网址>
git clone <版本库的网址> <本地目录名> // 指定本地目录名
git clone -o romoteBranchName <版本库的网址> //指定远程分支名称
【git|git 合并两个远程分支】clone 命令会创建指定本地目录名的文件夹把版本库的内容更新下来,默认创建本地分支 master 和远程分支 origin 并绑定;
-o
可以指定远程分支名称;不指定本地目录名则创建与版本库目录名一样的目录。
- git remote
git remote //命令列出所有远程主机
git remote -v //列出所有远程主机并展示远程主机的网址
git remote show <主机名> //查看远程分支的详细状况
git remote add <主机名> <网址> //添加远程主机名
git remote rm <主机名> // 删除远程主机
git remote rename <原主机名> <新主机名> // 修改远程主机名
- git branch
git branch //查看本地分支 现在所在的分支会有 * 号标注
git branch -r //查看远程分支
git branch -a //查看所有分支(本地+远程)
- git checkout
git checkout 分支名 //切换到指定分支
//指定本地分支切出新分支并切换。不指定分支时根据当前分支切新分支
git checkout -b newBrach 远程分支/本地已有分支
- git merge
git merge 本地分支名 //合并本地分支
//合并本地分支,用于取 fetch 后的内容
git merge 远程分支/本地分支
- git pull
//把指定远程主机名远程分支的内容拉取到指定的本地分支
git pull <远程主机名> <远程分支名>:<本地分支名>
//把指定分支内容拉取到当前本地分支,相当于先 fetch 再 merge
git pull <远程主机名> <远程分支名>
- git push
//把指定本地分支的 commit 推到指定的远程主机远程分支上
git push <远程主机名> <本地分支名>:<远程分支名>
//把本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
git push <远程主机名> <远程分支名>
//删除指定的远程分支,等同于推送一个空的本地分支到远程分支
git push <远程主机名>:<远程分支名>
//指定默认主机,下次直接 git push 即可
git push -u <远程主机名> <本地分支名>
推荐阅读
- gitlab|gitlab 通过备份还原 admin/runner 500 Internal Server Error
- 刘婵为何不娶关羽的女儿为妻子,而为何要娶张飞的两个女儿
- gitlab|Gitlab升级(12.2.1到14.6.4)
- 说睡
- 有人与我谈格局
- ||11|2019年9月9日
- 活的教导7:两个阶段
- 常用git命令总结
- 两个人在一起,最怕将就。
- 两个心得