learn git branching学习整理3
介绍
learn git branching是一个非常好的git学习网站,它与传统的文字讲解相比较起来有一个非常大的亮点----图形化的git提交树可以实时的反馈并告诉你当前所做的git操作在对于代码管理来说实际意味着什么,这是一个非常好的反馈机制,相比较于直接用命令行来学习git,你会更加了解当前正在做什么。
learn git branching还内置了一套自己的git算法,其大部分命令和真实的git命令没有区别,并且它会以闯关的形式进行git教学,如果能够顺利的通过所有关卡,那么初学者对于git的理解也就差不多了。
链接: https://learngitbranching.js.org/?locale=zh_CN.
我在刚开始接触并通过learn git branching学习git的时候正是被上面的那些优点所吸引,产生了想要快速通关的想法,但是在中途的时候我发现,每一个独立的每一个小关卡虽然简单,但是其实之后的一个关卡的通过其实都要依赖一些之前所用到过的git命令,如果对于之前的命令不加记忆,你很快就会玩不下去,于是我就开始记录通关命令,再后来转念一想由于工作的原因需要用到git,但是公司的电脑只能访问为数不多的知识查询网站(其中就不包括learn git branching)所以干脆还是把每一关的通关记录做成博客,方便以后需要用到的时候随时查看。
另外,我发现learn git branching虽然强大,但是有些git相关的知识他也是不包含的,比如git在真实的环境中,本地电脑下是有三个工作区的(workspace、缓冲区和本地仓库),这一点在教程中都没有体现出来(以后统称learn git branching为教程),另外,由于是git教学的一个网站,它的很多命令也是网站作者自己实现的,所以并不是所有的git命令都可以在该网站上使用验证,所以在这篇博客完成后我会按照教程关卡的顺序在真实环境下详细验证一些我觉得理解起来比较模糊的命令。如果有必要的话,应该会把验证过程也上传到博客。
目录
- 介绍
- 第二十七关:推送主分支
- 基础命令
- 命令演示
- 通关条件
- 通关命令:
- 备注
- 第二十八关--合并远程仓库
- 通关条件
- 通关命令:
- 备注
第二十七关:推送主分支
合并特性分支:
既然你应该很熟悉fetch、pull、push了,现在我们要通过一个新的工作流来测试你的这些技能。
在大型项目中开发人员通常会在(从main上分出来的)特性分支上工作,工作完成后只做一次集成。这跟前面课程的描述很相像(把side分支推送到远程仓库),不过本节我们会深入一些。
但是有些开发人员只在main上做push、pull----这样的话main总是最新的,始终与远程分支(o/main)保持一致。对于接下来这个工作流,我们集成了两个步骤:
① 将特性分支集成到main上
② 推送并更新远程分支
基础命令
让我们看看如何快速的更新main分支并推送到远程
命令演示
git pull --rebase;git push
我们执行了两个命令:
① 将我们的工作rebase到远程分支的最新提交记录
② 向远程仓库推送我们的工作
通关条件
初始条件:
通关目标:
通关命令:
git fetch
git rebase o/main side1 //把side1分支rebase到o/main下,并且HEAD指向side1
git rebase side1 side2
git rebase side2 side3
git checkout main
git merge side3
git push
备注
这一关里面的git checkout main;git merge side3可以用git rebase side3 main一条命令来代替。
第二十八关–合并远程仓库
为什么不用merge呢?
为了push新变更到远程仓库,你要做的就是包含远程仓库中最新变更。意思就是只要你的本地分支包含了远程分支(如o/main)中的最新变更就可以了,至于具体是用rebase还是merge,并没有限制。
那么既然没有规定限制,为何前面几节都在着重于rebase呢?为什么在操作远程分支时不喜欢用merge呢?
在开发社区里,有许多关于merge与rebase的讨论。以下是关于rebase的优缺点。
优点:
Rebase使你的提交树变得很干净,所有的提交都在一条线上。
缺点:
Rebase修改了提交树的历史
比如,提交C1可以被rebase到c3之后。这看起来c1中的工作是在c3之后进行的,但实际上是在c3之前。
一些开发人员喜欢保留提交历史,因此更偏爱merge。而其他人(比如我自己)可能更喜欢干净的提交树,于是偏爱rebase。仁者见仁,智者见智。
learn git branching学习整理3相关推荐
- Learn Git Branching 学习笔记(移动提交记录篇)
目录 一.移动提交记录篇 1.Git Cherry-pick 2.交互式rebase Git用法高级篇在上一篇文章中Learn Git Branching 学习笔记(高级篇)_流年--by gone的 ...
- Learn Git Branching 学习笔记(高级话题篇)
目录 一.高级话题篇 1.多分支rebase 2.选择父提交记录 3.纠缠不清的分支 Git的一些技术.技巧与贴士集合在上一篇文章中 Learn Git Branching 学习笔记(Git 技术.技 ...
- 分享一个学习git的图形化学习网站-Learn Git Branching参考答案整理
分享一个学习git的图形化学习网站:Learn Git Branching 初次学习点这里 这个链接可以跳过前面的帮助信息直接进入:Learn Git Branching 老手点这里 LearnGit ...
- git 指令学习和熟悉——learn git branching练习笔记
前言: 在工作中我们用到git系列工具机会很多,也常常需要熟悉git 相关指令,那怎样才能高效学习git指令呢?我们可以通过小游戏learn git branching和菜鸟教程完成学习. 小游戏链接 ...
- Learn Git Branching:在游戏中学会Git
Learn Git Branching:在游戏中学会Git Learn Git Branching是一个学习Git操作的教程,作者为不同的命令设计了相应的关卡,它并不枯燥乏味,相反,我们每通过一个关卡 ...
- Learn Git Branching 记录
Learning Git Branching 可以说是目前为止最好的教程了,地址 点击右下角问号显示常用命令 1.提交 git commit 提交内容,并把这些修改保存成了一个提交记录 C3,C3 的 ...
- Learn Git Branching:一个非常好的学习Git命令的网站
我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 网址 GitHub地址 特点 演示 Demo 简介 闯关 网址 h ...
- 简单git命令学习整理
抽了空学习了廖雪峰老师git教程,然后对自己学习的几个命令做下笔记. git init : 初始化git仓库,会生成一个隐藏文件. .git ,没有特殊要求就不用去动它了哈. git add XXX( ...
- Learn Git Branching Note
基础篇 1 Git Commit git commit 2 Git Branch git branch newImage git commit git checkout newImage git co ...
最新文章
- 4G EPS 的网络协议栈
- 多线程之 CreateThread与_beginthreadex本质区别
- Android Notification状态栏通知
- 惊了!哆啦A梦里最能打的道具,居然真实存在!还打破了世界纪录,看完跪了....
- docker 安装部署 Jenkins 2.322
- vimpython配色_超漂亮 vim 配置:space-vim
- (Greedy approach)Find longest word in dictionary that is a subsequence of a given string
- 解决跨浏览器兼容的CSS编码准则
- MySQL报错: Access denied for user 'root'@'localhost'
- Javashop 7.0 增加小程序支付(二次开发)
- Http协议报文格式
- vb调用python函数_vb.net / C# 调用 python
- tableau 日周月筛选器_Tableau技巧——快速计算同比和环比(及其衍生)
- exe文件修复,关于logo1_exe“威金”变种病毒的探讨
- 苹果手机3D-Touch这个功能,其实是吃鸡神器!
- 【我不熟悉的css】css使用background-clip,实现圆角彩色的边框,文字渐变色
- Oracle卸载卸不干净,Oracle彻底删除的办法(winxp)
- 利用FFT计算非平稳随机信号的WVD分布
- 学习ARM开发(1)
- python上传大文件s3_使用Python boto3上传Windows EC2实例中的文件至S3存储桶中
热门文章
- 基于ssh的淘狗、宠物狗、宠物买卖商城mysql
- 首个IPv6下一代无线网建成
- 测试投影仪性能的软件,4种CPU配置家用高清微型投影仪速度测试体验
- css实现圆形渐变色边框
- 配置Ubuntu桥接网络
- 海龟(turtle)与陆龟(tortoise)
- Java根据word模板填充数据(使用poi-tl)
- 一、PX4环境搭建和编译(Ubuntu 16.04、ROS kinetic)
- python实现朋友圈跟发_用Python发一个高逼格的朋友圈「附代码」
- win10进行安装使用11ie浏览器——遇到问题合集解决(执行一遍、问题解决)