Git使用感悟
前言
分支介绍

我们现在开发的分支一般是这样的(基于上面那张图片的):
master:上线用的
dev:开发用的
featature_xxx:开发用的
test:测试用的
hotfix:修复bug的
一般是这样子的:
公共分支:
master、dev、test,一般是不会这些分支上开发的,都是由别的分支合并到这些分支上
私有分支:
feature_xxx,hotfix_xxx,这些分支一般是由某个人或某几个人一起开发一个功能点
feature_xxx从dev分支分出来
feature_xxx合并到test去测试
feature_xxx合并到devdev合并到master
master打tag上线
hotfix分支从master分支分出来
hotfix分支合并到test去测试
hotfix分支合并到master
master打tag上线
hotfix分支合并到dev
常用指令
git branch 查看当前的分支
git checkout xxx 切换到xxx分支
git checkout -b xxx 基于当前分支创建分支xxx,并切换到xxx分支
git status 查看文件处于什么状态
git add xxx 放到暂存区,等待被commit
git commit -m "xxx" commit操作,等待被push
git push 将本地分支推向远程分支
git pull 远程分支同步到本地分支
git merge xxx 将xxx分支合并到当前分支
git log --oneline --graph 查看提交历史记录
关于 git merge
- 第一种情况
feature_a是从dev分支分出来的,如果将feature_a合并到dev分支中,并且dev分支没有任何更改的情况下,使用merge命令的话,dev的头指针只是移动了一下,如下图所示


- 第二种情况
如果dev分支做了改动的话,那么会新建一个commit的点,如下图所示


git merge 指令会根据不同的情况自动执行
git merge --no-ff 会强行采用第二种方案,也就是总会新建一个commit点
关于 git rebase
rebase也是合并操作,与merge不同的是,rebase 命令将另一分支上的所有修改都移至当前分支上
下面是分支情况,我们现在要把dev分支合并到feature_a上

如果采用merge的话,会产生下图效果

如果采用rebase的话,会产生下图效果,它把dev修改的commit都移动到feature_a的前面了

关于git pull
git pull 的操作是git fetch & git merge
git pull --rebase 的 操作是 git fetch & git rebase
最佳实践
git merge --no-ff:私有分支往公共分支合并的时候,比如feature_xxx往dev或test上合并的时候,产生新的commit,代表着有合并的记录
git rebase:feature_xxx需要和dev同步时,合并dev的时候,因为feature_xxx最终会合并到dev,如果采用merge的话,会有好多新的commit
git pull --rebase:使用这个命令进行git pull,不会产生新的commit
思考
不确定:当两个feature_xxx合并的时候,应该用git merge还是git rebase呢?小伙伴有什么想法可以留言一下哈
Git使用感悟的更多相关文章
- git初使用总结感悟
####首先说说git在工作中的一般流程1.首先就是进入新公司之后,要了解公司用的是什么代码托管,比如gitlab或者github(私有库花钱) 2.找技术同时把你加入到工作项目组并给你权限(一般都是 ...
- 学习Git的总结与体会
学习Git的总结 blog 第一次学习Git是完全按照廖雪峰老师的教程学习的,学的过程中基本上没有遇到什么问题,但是自己实际操作就问题不断了. 首先,还是按照惯例,来膜拜一下廖雪峰老师精简的教程知识吧 ...
- Git代码管理心得
一.概述: 这次按照要求进行了看似复杂,实则非常复杂并且麻烦(网上教程众多且啰嗦)的对git使用的学习,从星期六晚18:48我准备这次作业开始,直到了晚上22:44才结束电脑上的操作···(导致这篇随 ...
- 使用PHP脚本远程部署git项目
准备工作: 1.coding.net创建私有项目 2.安装了Web服务 Git服务的服务器 服务器端: 1.nginx.php-fpm统一用www用户 www 目录,这个可以通过修改配置文件实现. [ ...
- 不会git的程序员,会不会被鄙视?
昨天一朋友在微信上问了我一个问题,我觉得很有趣,于是将本次聊天的内容分享给大家. 我朋友说,如果一个程序员不会使用 git,会不会被别人觉得低一个档次? 事先声明啊,这与公司技术栈无关,不要说有些公司 ...
- Svn在工作中的实践感悟
Svn是一款管理项目代码的版本控制系统,是基于集中式的版本控制系统.在工作中,由于实际开发工作的需要,部门是使用Svn来管理日常的项目开发任务.使用这么长时间了,来谈谈对Svn的感悟. 首先,说下工作 ...
- 【学习总结】Git学习-GIT工作流-千峰教育(来自B站)
Git工作流指南 - av32575602 文档资料 目录: 1-什么是版本控制系统 2-工作流简介 3-集中式工作流 4-功能分支工作流 5-GitFlow工作流 小记: 初看差点放弃了,不过后面还 ...
- 关于使用git上传远程仓库的两种情况(新项目与老项目)
具体的git配置与github仓库ssh配置在这里就不再赘述,本次只讲自己之前遇到的两个内容 1.还没有项目,将远程仓库clone下来直接在里边写项目. 2.已有项目,将已有的项目直接添加到建立好的远 ...
- 从Java小白到收获BAT等offer,分享我这两年的经验和感悟
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
随机推荐
- 7.12 NOI模拟赛 生成树 装压dp vector装压
LINK:生成树 这场比赛我打的真失败 T3是比较容易的 却一直刚 那道"数论" 10分其实搜一下全排列. 30分容易想到对边进行装压dp. 不过存在一些细节 可以对于一个连通块的 ...
- 省选模拟赛 4.26 T1 dp 线段树优化dp
LINK:T1 算是一道中档题 考试的时候脑残了 不仅没写优化 连暴力都打挂了. 容易发现一个性质 那就是同一格子不会被两种以上的颜色染.(颜色就三种. 通过这个性质就可以进行dp了.先按照左端点排序 ...
- 4.23 子集 分数规划 二分 贪心 set 单峰函数 三分
思维题. 显然考虑爆搜.然后考虑n^2能做不能. 容易想到枚举中间的数字mid 然后往mid两边加数字 使其整个集合权值最大. 这里有一个比较显然的贪心就不再赘述了. 可以发现这样做对于集合是奇数的时 ...
- JS&ES6学习笔记(持续更新)
ES6学习笔记(2019.7.29) 目录 ES6学习笔记(2019.7.29) let和const let let 基本用法 let 不存在变量提升 暂时性死区 不允许重复声明 块级作用域 级作用域 ...
- Linux的VMWare中Centos7文件系统挂载和开启网卡及简单命令
一.路径 挂载磁盘/etc/fastab 开启网卡 vi .bash_profile ---更改PATH环境变量 可设置 mysql提示符 cd /etc/yum.rep ...
- 简单配置iOS的通用链接,迅速解决“universal link 校验不通过”问题!
对于需要使用微信支付等功能的APP来说,对接微信提供的openSDK是不可缺少的一环.随着苹果iOS 13系统版本的安全升级,为此openSDK在1.8.6版本进行了适配.1.8.6之后的openSD ...
- VisualSVN Server修改默认端口号 443->8443
- Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...
- 密码学系列——消息摘要(c#代码实操)
前言 简介: 消息摘要(Message Digest)又称为数字摘要(Digital Digest) 它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向Hash加密函数对消息进行作用而产生 使 ...
- C#LeetCode刷题之#705-设计哈希集合(Design HashSet)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4114 访问. 不使用任何内建的哈希表库设计一个哈希集合 具体地说 ...