git实战

git实战

第一章 快速入门

1.1 什么是git

git是一个分布式的版本控制软件。

  • 软件,类似于QQ、office、dota等安装到电脑上才能使用的工具。
  • 版本控制,类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据。
  • 分布式
    - 文件夹拷贝
    - 本地版本控制
    - 集中式版本控制
    - 分布式版本控制

1.2 为什么要做版本控制

要保留之前所有的版本,以便回滚和修改

1.3 安装git

详见:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

第二章 “东北热”创业史

2.1 第一阶段:单枪匹马开始干

想要让git对一个目录进行版本控制需要以下步骤:

  • 进入要管理的文件夹
  • 执行初始化命令
    git init
    
  • 管理目录下的文件状态
    git status
    注:新增的文件和修改过的文件都是红色
    
  • 管理指定文件(红变绿)
    git add 文件名
    git add .
    
  • 个人信息配置:用户名、邮箱【一次即可】
    git config --global user.email ''you@exampe.com''
    git config --global user.name ''your Name''
    
  • 生成版本
    git commit -m '描述信息'
    
  • 查看版本记录
    git log
    

2.2 第二阶段:拓展新功能

		git addgit commit -m '短视频'

2.3 “约饭事件”

  • 回滚至之前版本
    git log
    git reset --hard 版本号
    
  • 回滚之之后版本
    git reflog
    git reset --hard 版本号
    

2.4 小总结

	git initgit addgit commitgit loggit refloggit reset --hard 版本号

在这里插入图片描述

2.5 第四阶段:商城&紧急修复bug

2.5.1 分支

分支可以给使用者提供多个环境的克隆,意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

2.5.2 紧急修复bug方案

在这里插入图片描述

2.5.3 命令总结

  • 查看分支

    git branch
    
  • 创建分支

    git branch 分支名称
    
  • 切换分支

    git checkout 分支名称
    
  • 分支合并(可能产生冲突)

    git merge 要合并的分支
    注意:切换分支再合并
    
  • 删除分支

    git branch -d 分支名称
    

2.5.4 工作流

在这里插入图片描述

2.6 第五阶段:进军三里屯

有钱之后就要造啊,一个人在三里屯买了一层楼做办公室
在这里插入图片描述

2.6.1 第一天上班前在家上传代码

首先,需要注册GitHub账号,并创建远程仓库,然后再执行如下命令,将代码上传到GitHub。
在这里插入图片描述

1. 给远程仓库起别名git remote add origin 远程仓库地址
2. 向远程推送代码git push -u origin 分支

2.6.2 初次在公司新电脑下载代码

1. 克隆远程仓库代码git clone 远程仓库地址 (内部已实现git remote add origin 远程仓库地址)
2. 切换分支git checkout 分支 

在公司下载代码后,继续开发

1. 切换到dev分支进行开发git checkout dev
2. 把master分支合并到dev【仅一次】git merge master
3. 修改代码
4. 提交代码git add .git commit -m 'xx'git push origin dev

2.6.3 下班回家继续写代码

1. 切换到dev分支进行开发git checkout dev
2. 拉代码git pull origin dev
3. 继续开发
4. 提交代码git add .git commit -m 'xx'git push origin dev

2.6.4 到公司继续开发

1. 切换到dev分支进行开发git checkout dev
2. 拉最新代码(不必再clone,只需要通过pull获取最新代码即可)git pull origin dev
3. 继续开发
4. 提交代码git add .git commit -m 'xx'git push origin dev

开发完毕,要上线

1. 将dev 分支合并到master分支,进行上线git checkout mastergit merge devgit push origin master
2. 把dev分支也推送到远程git checkout devgit merge mastergit push origin dev

2.6.5 在公司约妹子忘记提交代码

1. 拉代码git pull origin dev
2. 继续开发
3. 提交代码git add .git commit -m 'xx'注:忘记push了

2.6.6 回家继续写代码

1. 拉代码,发现在公司写的代码忘记提交了git pull origin dev2. 继续开发其他功能3. 把dev分支也推送到远程git add .git commit -m 'xx'git push origin dev

2.6.7 到公司继续写代码

 1. 拉代码,把晚上在家写的代码拉到本地(有合并、可能产生冲突)git pull origin dev2. 如果有冲突,手动解决冲突3. 继续开发其他功能4. 把dev分支也推送到远程git add .git commit -m 'xx'git push origin dev

2.6.8 其他

git pull origin dev
等价于
git fetch origin dev
git merge origin/dev

在这里插入图片描述

2.6.9 rebase的作用

rebase可以保持提交记录简洁,不分叉。
在这里插入图片描述

2.6.10 快速解决冲突

  • 安装beyond compare

  • 在git中配置

    git config --local merge.tool bc3
    git config --local mergetool.path '/user/local/bin/bcomp'
    git config --local mergetool.keepBackup false
    
  • 应用beyond compare解决冲突

    git mergetool
    

2.7 小总结

  • 添加远程连接(别名)

    git remote add origin 地址
    
  • 推送代码

    git push origin dev
    
  • 下载代码

    git clone 地址
    
  • 拉取代码

    git pull origin dev
    等价于
    git fetch origin dev
    git merge origin/dev
    
  • 保持代码提交整洁 (变基)

    git rebase 分支
    
  • 记录图形展示

    git log -- graph --pretty=format:"%h %s"
    

2.8 第六阶段:多人协同开发工作流

在这里插入图片描述

创建项目&邀请成员

协同开发时,需要所有成员都可以对同一个项目进行操作,需要邀请成员并赋予权限,否则无法开发。
github支持两种创建项目的方式(供多人协同开发)

  1. 合作者,将用户添加到仓库合作者之中,该用户就可以向当前仓库提交代码。
    在这里插入图片描述
  2. 组织,将成员邀请进入组织,组织下可以创建多个仓库,组织成员可以向组织下仓库提交代码。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
扩展:Tag标签管理
为了能清晰的管理版本,在公司不会直接使用commit 来做版本,会基于Tag来实现:v1.0、v1.2、v2.0版本。

git tag -a v1.0 -m '版本介绍'		创建本地创建tag信息
git tag -d v1.0						删除tag
git push origin --tags				将本地tag信息推送到远程仓库
git pull origin --tags				更新本地tag版本信息git checkout v.10					切换tag
git clone -b v0.1 地址				指定tag下载代码

2.8.2 小弟开发

  • 小弟注册github账号或gitlab账号
  • 邀请小弟进入组织(默认对组织中的项目具有读权限)
    在这里插入图片描述
  • 邀请小弟成为某项目的合作者
    在这里插入图片描述
  • 小弟在自己电脑上下载代码并开发
git clone 地址
git checkout dev
git checkout -b dzz
写代码...
git add .
git commit -m '斗地主功能完成'
git push origin ddz

2.8.3 code review

  1. 配置,代码review 之后才能合并到dev分支。

在这里插入图片描述
在这里插入图片描述

  1. 小弟提交code review申请
    在这里插入图片描述
    在这里插入图片描述

  2. 小组长做code review
    在这里插入图片描述

    在这里插入图片描述

提测上线 (预发布)

由专门团队或团队leader执行以下步骤:

  1. 基于dev分支创建release分支
git checkout dev
git checkout -b release
  1. 测试等

  2. 合并到master

使用pull request
或
本地release合并到master分支
  1. 在master分支打tag
git tag -a v2 -m '第二版 斗地主功能'
git push origin --tags

5.运维人员就可以去下载代码做上线

git clone -b v2 地址

2.9 第七阶段:给开源软件贡献代码

  • fork源代码 将别人源代码拷贝到我自己的远程仓库。
  • 在自己仓库进行修改代码
  • 给源代码的作者提交 修复bug的申请(pull request)

第三章 其他

3.1 配置

  • 项目配置文件:项目/,git/config
git config --local user.name '用户姓名'
git config --local user.email '邮箱'
  • 全局配置:~/.gitconfig
git config --global user.name '用户姓名'
git config --global user.email '邮箱'
  • 系统配置文件:/etc/.gitconfig
git config --system user.name '用户姓名'
git config --system user.email '邮箱'
注意需要root权限

应用场景:

git config --local user.name ‘用户姓名’
git config --local user.email '邮箱'
git config --local merge.tool bc3
git config --local mergetool.path '/usr/local/bin/bcomp'
git config --local mergetool.keepBackup false
git remote add origin 地址 ,默认添加在本地配置文件中(--local)

3.2 免密登录

SSH实现

1. 生成公钥和私钥(默认放在~/.ssh目录下,id_rsa.pub公钥、id_rsa私钥) ssh-keygen
2. 拷贝公钥的内容,并设置到github中
3. 在git本地中配置ssh地址git remote add origin git@github.com:WuPeiqi/dbhot.git
4. 以后使用git push origin master

3.3 git忽略文件

*.h
!a.h
files/
*.py[c|a|d]

更多参考:https://github.com/github/gitignore

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ教程-(4)-领域模型概述

Apache RocketMQ 是一款典型的分布式架构下的中间件产品,使用异步通信方式和发布订阅的消息传输模型。通信方式和传输模型的具体说明,请参见下文通信方式介绍和消息传输模型介绍。 Apache RocketMQ 产品具备异步通信的优势,系统拓扑简单、上下…

Java-IDEA好用的插件

Lombok,结合一些列注解,帮我们轻松解决重复编写实体类get、set、toString、build、构造方法等麻烦 Chinesepinyin-CodeComp,让界面汉化,使用起来更有亲和力 MyBatisX,点击小鸟图标,轻松再Mapper接口与xml文件之间实…

【算法与数据结构】104、111、LeetCode二叉树的最大/最小深度

文章目录 一、题目二、层序遍历法三、递归法四、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、层序遍历法 思路分析:两道题都可以用层序遍历(迭代法)来做,遍历完…

帮助中心内容需要囊括什么?(内含案例分享)

给产品制作一个帮助中心,让用户能够通过访问帮助中心查看产品相关内容,尽快了解产品,熟悉操作。不仅仅局限于售后,在售中售前都能够发挥很大的作用,帮助用户全面了解产品,减少销售的工作量,节约…

Zookeeper命令总结

目录 1、常用命令2、ls path3、create xxx创建持久化节点创建临时节点创建持久化序列节点 4、get path5、set path6、delete path7、监听器总结1)节点的值变化监听2)节点的子节点变化监听(路径变化)3)当某个节点创建或…

最优化方法

一. 图论 1.最小生成树 图的生成树是它的一颗含有其所有顶点的无环连通子图,一 幅加权图的最小生成树(MST)是它的一颗权值(树中的所有边的权值之和) 最小的生成树 • 适用场景:道路规划、通讯网络规划、管道铺设、电线布设等 题目数据 kruskal算法 稀疏图&#x…

oracle单个用户最大连接数限制

项目经理反馈,现场已做了单个用户的最大连接数2000的限制,但数据库还是报无法连接,故障用户的连接数已3800多了。 查看日志报错如下 2023-07-20T13:07:57.79465308:00 Process m000 submission failed with error 20 Process m000 submiss…

HDFS的设计目标和重要特性

HDFS的设计目标和重要特性 设计目标HDFS重要特性主从架构分块存储机制副本机制namespace元数据管理数据块存储 设计目标 硬件故障(Hardware Failure)是常态,HDFS可能有成百上千的服务器组成,每一个组件都有可能出现故障。因此古见检测和自动快速恢复的H…

梯度提升树的基本思想

目录 1. 梯度提升树 VS AdaBoost 2. GradientBoosting回归与分类的实现 2.1 GradientBoosting回归 2.2 GradientBoosting分类 1. 梯度提升树 VS AdaBoost 梯度提升树(Gradient Boosting Decision Tree,GBDT)是提升法中的代表性算法&#…

帆软报表设计器设置步骤

1、连接工作目录(可以是远程服务器) 在打开的界面中设置具体的远程地址 一个报表文件可以有多个数据集、但是数据集依附于报表文件的存在,不能跨报表共享。 先补充这么多,有遇到问题再写一点。 (完)

Cpp 01 — namespace命名空间、C++的输入与输出、缺省参数、函数重载、引用、隐式类型转换

前言:本文章主要用于个人复习,追求简洁,感谢大家的参考、交流和搬运,后续可能会继续修改和完善。 因为是个人复习,会有部分压缩和省略。 一、namespace命名空间 C使用命名空间(namespace)来避免命名冲突。 在定义一个…

STM32CUBUMX配置RS485(中断接收)--保姆级教程

———————————————————————————————————— ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驱动&#x…

Vue mixin 混入

可以复用的组件,我们一般会抽离,写成公共的模块。 可以复用的方法,我们一般会抽离,写成公共的函数。 那么 在 Vue 中,如果 某几个组件实例 VueComponent 中、或者 整个 Vue 项目中 都存在相同的配置,那就…

firefox笔记-Centos7离线安装firefox

目前(2023-03-22 16:41:35)Centos7自带的firefox已经很新了是2020年的。主要原因是有个web项目,用2020年的firefox打不开。 发到互联网上是2023-07-24。 报错是js有问题,估计是搞前端的只做了chrome适应,没做firefox…

Spring使用注解进行对象装配(DI)

文章目录 一. 什么是对象装配二. 三种注入方式1. 属性注入2. 构造方法注入3. Setter注入 三. 三种注入方式的优缺点四. 综合练习 通过五大类注解可以更便捷的将对象存储到 Spring 中,同样也可以使用注解将已经储存的对象取出来,直接赋值到注解所在类的一…

ATTO488 NHS ester ,新型亲水性荧光标记物,具有良好的水溶性

陕西新研博美生物科技有限公司MISS.wu小编(2023.7月26日)为大家整理以下的内容: Atto488-NHS是一种新型亲水性荧光标记物,具有良好的水溶性。这种染料表现得很浓吸收、高荧光量子产率以及优异的热稳定性和光稳定性。因此&#xff…

亚马逊、速卖通,阿里国际等平台测评如何用自养号测评补单

在电商领域,补单是一种常见的推广方式。它能够优化商品销售、留下优质评论、打压竞品和赶走跟卖等,具有很多好处。然而,补单也存在安全性问题,有些卖家找人补单后店铺反而出了问题。因此,了解测评系统是非常重要的的。…

android9-android13 AMS演进初窥

目录 一:概览 WindowManagerService 基本介绍 ActivityManagerService 基本介绍 二:AMS及其关联的WMS中主要组件的类图和对像图 一:android 9中AMS/WMS的类图和对像图 二:android 10中AMS/WMS的类图和对像图 三&#xff1a…

关于应用在Google Play的元数据优化

应用标题中的关键词权重最大,其次是简短描述中的关键词,最后是长描述关键词,了解这些就能够很好的提高应用的可见度,下载量和整体成功率。 1,标题。 Google Play最多允许标题容纳30个字符,关键词的频率和密…

盘点!项目管理软件排行榜前十名

如今企业规模不断扩大,业务逐渐复杂化,项目管理已经成为现代企业管理中不可或缺的一环。作为协调管理者、团队成员和客户之间交流的工具,项目管理软件不仅可以提高工作效率,还可以提高项目成功的几率,对于企业具有重要…