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 add
		git commit -m '短视频'

2.3 “约饭事件”

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

2.4 小总结

	git init
	git add
	git commit
	git log
	git reflog
	git 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 master
	git merge dev
	git push origin master
2. 把dev分支也推送到远程
	git checkout dev
	git merge master
	git 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 dev
 
 2. 继续开发其他功能
 3. 把dev分支也推送到远程
 	git add .
 	git commit -m 'xx'
 	git push origin dev

2.6.7 到公司继续写代码

 1. 拉代码,把晚上在家写的代码拉到本地(有合并、可能产生冲突)
 	git pull origin dev
 2. 如果有冲突,手动解决冲突
 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux网卡命名规则与修改方法

一.前言: 在早期的的操作系统中例如fedora13或者ubuntu15之前网卡命名的方式为eth0,eth1,eth2,属于biosdevname 命名规范。当然这是针对intel网卡的命名规则,对于realtek类型的网卡会命名为ens33。但是这个编号往往不一…

(七)「消息队列」之 RabbitMQ 发布者确认(使用 .NET 客户端)

发布者确认(Publisher Confirms) 发布者确认是一个 RabbitMQ 扩展,用于实现可靠的发布。当在通道上启用发布者确认时,客户端发布的消息将由代理异步确认,这意味着它们已在服务器端得到处理。 0、引言 先决条件 本教程…

uni-app个人中心

一. 介绍uni-app: uni-app 是基于Vue.js框架开发的一个跨平台移动应用开发框架,可以同时支持多个平台(如iOS、Android、Web等)的应用开发。采用了统一的语法和组件规范,可以大大简化跨平台开发的工作,提高…

SZ:zip/内部函数外部函数/VGG模型/nn

zip: -r recursion-d delete-m move (move隐藏的意思是,原文件会消失)想增加文件,不需要加参数什么参数也没有。如果zip压缩文件不存在,执行以上命令将会创建一个新的zip文件并将指定的文件添加进去。如果zip压缩文件…

需求管理中最易忽视的6大重点

需求管理是产品经理的重点工作,如果无法有效进行需求管理,往往会引起需求变更、项目延期以及成本增加等问题。那么如何对需求进行高效管理,我们在需求管理中,往往最容易忽视的重点都有哪些? 1、重视项目整体管理计划 首…

【前后端数据交互】原生JS的Fetch请求封装

一、 AJAX 和 Fetch 对比 1.1 AJAX 概述 AJAX 是最早出现请求数据的方式,它不需要不需要刷新整个页面即可更新部分数据。 属于原生 JS 范畴 ,技术核心是 XMLHttpRequest 对象。 AJAX 请求过程:创建 XMLHttpRequest 对象、连接服务器、发送请…

Qt Core学习日记——第六天QMetaMethod

Qt子类会将每一个函数封装成QMetaMethod存储在对应的QMetaObject中,包括信号、槽函数、普通函数、构造函数、析构函数 函数解析 QMetaMethod::methodSignature 获取方法的签名 比如函数slot2,对应签名是“slot2(int*)” QMetaMethod::name 方法名称。…

你能说说“淘宝购物车”怎么测试么?

前言 今天我给大家整理一篇面试高频问到的问题“淘宝购物车”怎么测试。 测试思维 依然附上测试任何事物的测试思路: 第一步:梳理产品的核心业务流程:明白这是个什么项目,实现了什么业务,以及是怎么实现的&#xf…

从Vue层面 - 解析发布订阅模式和观察者模式区别

目录 前言一、发布订阅模式什么是发布订阅模式?应用场景 二、观察者模式1)什么是观察者模式?2)应用场景3)vue中的观察者模式观察者(订阅者) - Watcher目标者(发布者) - D…

STM32 串口实验(学习一)

本章将实现如下功能:STM32通过串口和上位机对话,STM32在收到上位机发过来的字符串后,原原本本返回给上位机。 STM32 串口简介 串口作为MCU的重要外部接口,同时也是软件开发重要的调试手段,其重要性不言而喻。现在基本…

Fiddler使用说明及中文绿化版

Fiddler是最常用的Web调试工具之一。 对于开发来说,前端可以通过fiddler代理来调试JS、CSS、HTML样式。后端可以通过fiddler查看请求和相应,定位问题。 对于测试来说,可以通过抓包方式修改前端请求参数和模拟后端返回,快速定位缺…

如何创建vue2,vue3项目

前提需安装node.js和Vue CLI node.js:https://nodejs.org/zh-cn Vue CLI: npm install -g vue/cli 如何创建一个vue2项目 (1) 使用cmd终端直接创建 进入到vue项目所创建的目录里(我是直接创建在桌面上) 选择vue2 …

STL中的string类的模拟实现【C++】

文章目录 默认成员函数构造函数拷贝构造函数 赋值运算符重载函数析构函数beginendsizecapacityreserveeraseresizepush_backappendoperatorinsertswapsubstrc_stroperator[ ]findcleargetline>>运算符的重载<<运算符的重载 默认成员函数 构造函数 构造函数设置为…

现代控制理论

B站学习视频https://space.bilibili.com/230105574/channel/seriesdetail?sid1569601 一.引入状态-空间表达 &#xff08;本质上是使用一组向量的线性组合来表示整个系统任意物理量&#xff0c;也就是一个特征分解的过程&#xff09; 现代控制理论的基础是 状态-空间表达方…

IDEA以服务列表的形式展示

IDEA以服务列表的形式展示 要是没有要显示的服务列表的话就右键将启动的全部添加进去。正常是懒加载的形式&#xff0c;正常启动了就会添加进去。

Toyota Programming Contest 2023#4(AtCoder Beginner Contest 311)(A-G)

Contest Duration: 2023-07-22(Sat) 20:00 - 2023-07-22(Sat) 21:40 (local time) (100 minutes) 头文件和宏 #include<iostream> #include<string> #include<vector> using namespace std; #define int long long #define fer(i,a,b) for(int ia;i<b;i…

【时间复杂度】

旋转数组 题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 /* 解题思路&#xff1a;使用三次逆转法&#xff0c;让数组旋转k次 1. 先整体逆转 // 1,2,3,4,5,6,7 // 7 6 5 4 3 2 1 2. 逆转子数组[0, k - 1] // 5 6 7 4 3…

Pytorch个人学习记录总结 03

目录 Transeforms的使用 常见的transforms Transeforms的使用 torchvision中的transeforms&#xff0c;主要是对图像进行变换&#xff08;预处理&#xff09;。from torchvision import transforms transeforms中常用的就是以下几种方法&#xff1a;&#xff08;Alt7可唤出…

多源BFS-- 矩阵距离

关于多源BFS&#xff0c;基本上就是单源BFS的简单升级了一下&#xff0c;比如在queue中队头开始时只有一个&#xff0c;我们通过这一个队头去推导其他的东西。而多源最短路就是队头一开始有1-n个可能的数&#xff0c;一个一个去BFS。 题目思路&#xff1a; 这个题就直接把所有的…

0成本搭建自己的云数据库

第一步&#xff0c;租免费的云服务器 www.aliyun.com 阿里云的&#xff0c;可以免费租三个月 进入主页后选择云服务器ESC 选择这款&#xff0c;点击试用就行 第二步&#xff0c;配置服务器 在配置服务器系统的时候选择centos&#xff0c;省事&#xff0c;别选ubuntu&#x…