Git远程分支管理(四)
本系列为个人学习Git参照廖雪峰老师的笔记
- 本文内容:Git远程分支管理
参考笔记:
https://www.liaoxuefeng.com/wiki/896043488029600
文章目录
- 3 Git分支管理
- 3-1 创建与合并分支
- Practice
- 3-2 解决冲突
- 菱形冲突
- 3-3 分支管理策略
- Practice
- 3-4 Bug分支
- 3-5 Feature合并
- 3-6 多人协作
- 3-7 Rebase
3 Git分支管理
3-1 创建与合并分支
概念:
- 当我们创建新的分支,例如
dev
时,Git新建了一个指针叫dev
,指向master
相同的提交,再把HEAD
指向dev
,就表示当前分支在dev
上 - 就是直接把
master
指向dev
的当前提交,就完成了合并
查看分支
git branch – 查看分支
新建分支
git branch dev —新建分支dev
切换分支
git checkout dev —切换到dev分支
git switch dev
创建并切换
git checkout -b dev --创建并切换到新的分支
git switch -c dev
合并分支
git merge 合并某个分支到当前分支
删除分支
git branch -d 删除分支
Practice
新建分支并修改文件
➜ learngit git:(master) git branch dev
➜ learngit git:(master) git checkout dev
切换到分支 'dev'
➜ learngit git:(dev) ls
laoye_lu.txt teacher_ma.txt
➜ learngit git:(dev) vim laoye_lu.txt
➜ learngit git:(dev) ✗ cat laoye_lu.txt
laoye lu is disapper ...laoye lu is so cai !gai ya %%%%%
➜ learngit git:(dev) ✗ git add laoye_lu.txt
➜ learngit git:(dev) ✗ git commit -m "add gaiya"
[dev 06ed295] add gaiya1 file changed, 1 insertion(+)
切换分支并合并
➜ learngit git:(dev) git switch master
切换到分支 'master'
➜ learngit git:(master) ls
laoye_lu.txt teacher_ma.txt
➜ learngit git:(master) cat laoye_lu.txt
laoye lu is disapper ...laoye lu is so cai !➜ learngit git:(master) git merge dev
更新 333b891..06ed295
Fast-forwardlaoye_lu.txt | 1 +1 file changed, 1 insertion(+)
➜ learngit git:(master) cat laoye_lu.txt
laoye lu is disapper ...laoye lu is so cai !gai ya %%%%%
ps: 无法删除当前所在的分支
➜ learngit git:(dev) git branch -d dev
error: 无法删除检出于 '/home/rei/文档/rhw/learngit' 的分支 'dev'。
➜ learngit git:(dev) git branch
➜ learngit git:(dev) git switch master
切换到分支 'master'
➜ learngit git:(master) git branch -d dev
已删除分支 dev(曾为 333b891)。
3-2 解决冲突
菱形冲突
合并变成了
3-3 分支管理策略
通常,合并分支时,如果可能,Git会用Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward
模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
下面我们实战一下--no-ff
方式的git merge
:
合并:
git merge --no-ff -m "merge with no-ff" dev
Practice
➜ learngit git:(master) git branch tmp
➜ learngit git:(master) git switch tmp
切换到分支 'tmp'
➜ learngit git:(tmp) ls
laoye_lu.txt teacher_ma.txt
➜ learngit git:(tmp) vim laoye_lu.txt
➜ learngit git:(tmp) ✗ cat laoye_lu.txt
laoye lu is disapper ...laoye lu is so cai !game is fun \/
➜ learngit git:(tmp) ✗ git add laoye_lu.txt
➜ learngit git:(tmp) ✗ git commit -m "add game is fun"
[tmp e211d49] add game is fun1 file changed, 1 insertion(+), 1 deletion(-)
➜ learngit git:(tmp) git switch master
切换到分支 'master'
➜ learngit git:(master) git merge --no-ff -m "merge with no-ff" tmp
Merge made by the 'recursive' strategy.laoye_lu.txt | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)➜ learngit git:(master) git log --graph --pretty=oneline --abbrev-commit* 5010425 (HEAD -> master) merge with no-ff
|\
| * e211d49 (tmp) add game is fun
|/
* 06ed295 (dev) add gaiya
* 333b891 remove test.txt
* 0028773 create new file test.txt
* f764581 新增 laoye lu is disapper
* b1a98b3 teacher ma is shutdown
* 176fa53 teacher ma is unstoppable
* 357ea31 新增laoye_lu.txt
* 2871442 gank middle road
* ce1ee22 teacher ma is back to home
* f2a1a21 teacher Ma's lesson
3-4 Bug分支
git stash 存储 解决紧急bug
// 存储你当前的分支状态
git stash
用于复制一个特定的提交
git cherry-pick 4c805e2
3-5 Feature合并
用户强行删除合并前包含的分支
是这个包含机密资料的分支还是必须就地销毁:
git branch -D feature-vulcan
3-6 多人协作
你的小伙伴要在dev
分支上开发,就必须创建远程origin
的dev
分支到本地,于是他用这个命令创建本地dev
分支
git checkout -b dev origin/dev
指定本地dev
分支与远程origin/dev
分支的链接,根据提示,设置dev
和origin/dev
的链接
git branch --set-upstream-to=origin/dev dev
Branch ‘dev’ set up to track remote branch ‘dev’ from ‘origin’.
然后再进行代码拉取
git pull
3-7 Rebase
将错乱的提交记录整理成直线,其实也就是以主线为主,删除不必要的合并
合并后
Git远程分支管理(四)相关推荐
- linux下git分支管理,git远程分支管理
git远程分支管理 使用分支的原则 master分支是非常重要的,线上发布代码用这个分支,平时我们开发代码不要在这个分支上 创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并 ...
- Git 代码分支管理 / 版本管理
Git 代码分支管理 / 版本管理 在使用 Git 时,基本不可能只有一个分支. 即使只有一个人发开,也会考虑代码的安全而分多个分支.多人协同开发时,可能每个人在不同的分支开发,也可能不同团队在不同的 ...
- Git实战(五)| 让工作更高效,Git的分支管理
上一篇讲到Git的分支管理实操,在线合并和本地合并都进行了实操.毕竟:光说不练是假把式.而只练不整理,只能是傻把式了.分支管理到底如何进行管理呢? 先以GitLab上的一张经典的图打头,作为一个总体概 ...
- git 远程分支和tag标签的操作
git远程分支操作: 1.创建远程分支 git push --set-upstream origin develop:develop2 在服务器创建远程分支devlop2,让本地的develop分支和 ...
- 更改git远程分支的方法
更改git远程分支的方法 Pull失败的解决方法:
- git的分支管理(详细版)
git的分支管理 git所有分支之间彼此互不干扰,各自完成各自的工作和内容.可以在分支使用完后合并到总分支(原分支) 上,安全.便捷.不影响其他分支工作 查看当前工作在那个分支 git branch ...
- 139.00.005 Git学习-分支管理
@(139 - Environment Settings | 环境配置) 一.Why? 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交, ...
- Git 远程分支的pull与push
远程分支信息查看 git branch -r #查看远程分支git branch -a #查看所有分支,本地和远程git remote show [remote-name] #查看远程仓库信息 其中g ...
- Git 之四 分支管理
写在前面 Git 的官网上有很详细的使用教程(当然有翻译版本),具体地址是 https://git-scm.com/book/zh/v2.唯一不足就是,很多讲解并没有实机演示.但是,毫无疑问,官网 ...
最新文章
- SDP 协议分析 http://www.cnblogs.com/qingquan/archive/2011/08/02/2125585.html
- Android ProGuard使用要点!
- js实现模态框点击空白关闭
- CentOS 6.3开机自动挂载磁盘和文件夹
- python3.6+RF环境搭建
- 记录Pandas处理数据的两个小技巧
- 《软件需求分析(第二版)》第 15 章——变更管理 重点部分总结
- arduino 停止程序_建立Arduino机器人,第五部分:障碍规避
- [BZOJ1026]windy数
- 比反射更快:委托 第2部分
- flask接口mysql开发例子,使用Flask开发简单接口3–引入MySQL
- 附加作业:源自邹老师的作业“链接”
- IE11浏览器传时间格式不兼容,c.a.d.c.advice.AdcDaBaseExceptionAdvice : JSON parse error
- edup网卡 linux,应用笔记--使用USB WiFi网卡
- smarty 缓存用法简述(转)
- 关于制作朗文6++ dictionary mac自用词典问题总结
- 系统集成j2cache
- 关于培训机构~程序员培训
- 亚马逊要验证收款查关联?
- 玩客云armbian挂载硬盘
热门文章
- 虚拟主机服务器放在哪里,云虚拟主机的目录在哪里
- 数据库去重,group by、distinct、rowid的用法,oracle和mysql如何数据去重保留一条
- IDEA(2018.2)的下载、安装及破解
- Java中类对象为空是什么意思?
- iOS二维码代码实现
- 什么?还在用delete删除数据《死磕MySQL系列 九》
- 在线协助设计软件,figma、sketch、xd哪个才是你的优先选择
- 校验注解:@Valid 和 @Validated区别与用法(附详细案例)
- windows连接的蓝牙设备(如小爱同学),无法调节音量
- PMOS与NMOS场效应管相关知识点