git实战

news2024/10/10 22:24:40

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

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

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

相关文章

抖音seo短视频矩阵系统源码开发解析---多账号授权管理

本文开发语音使用PHP语言开发,梅雨plum框架自主研发,文末另附开发技巧 抖音SEO短视频矩阵系统源码开发解析是一种基于抖音平台的短视频排名优化技术,通过对抖音算法的分析和抖音用户行为的研究,提供一种基于“流量矩阵”的短视频管…

TCP/IP 五层协议模型

转载大佬文章 我们每天使用互联网,本质上是在传输/接收各种数据,具体如何传输则是按照一系列互联网协议进行的。我们常说的网络七层模型,五层模型,四层模型都是对数据传输过程做了细化的分层。 按照五层模型比较好理解&#xff0c…

Amazon Redshift Serverless – 现已正式推出新功能

去年在 re:Invent 上,我们推出了 Amazon Redshift Serverless 的预览版,这是 Amazon Redshift 的无服务器选项,可让您分析任何规模的数据,而无需管理数据仓库基础设施。您只需要加载和查询数据,并且只需为使用的内容付…

C语言动态内存管理(三)

目录 五、C/C程序的内存开辟1.图解2.关键点 六、柔性数组1.什么是柔性数组2.两种语法形式3.柔性数组的特点4.柔性数组的创建及使用在这个方案中柔性数组的柔性怎么体现出来的? 5.不用柔性数组,实现数组可大可小的思路6.对比 总结 五、C/C程序的内存开辟 1.图解 &a…

上手 SpringBoot

简介 SpringBoot设计的目的是简化 Spring应用的初始搭建以及 开发过程。 SpringBoot概述 parent 继承父pom文件,方便管理依赖的版本。此处涉及maven的使用 作用: 继承parent的形式可以采用引入依赖的形式实现效果 starter(原理是依赖传递) 包含了若…

C语言include学习

#include叫做文件包含命令&#xff0c;用来引入对应的头文件&#xff08;.h文件&#xff09;。 #include 也是C语言预处理命令的一种。 一个简单程序&#xff0c; #include <stdio.h>int main() {printf("hello world\n");return 0; } 使用printf()函数需要…

从虚拟现实到真实现实:沉浸式体验的未来 (ps beta)

首先&#xff0c;您需要创建一个免费的Adobe账户&#xff0c;如果您还没有一个账户的话。您可以在Adobe的注册页面上填写必要的信息来创建一个新账户。 Adobe: Creative, marketing and document management solutions login 创建账号&#xff1a; 编一个google邮箱&#xf…

F5 LTM 知识点和实验 1-BIG-IP 系统介绍

第一章&#xff1a;BIG-IP 系统介绍 基于包转发和全代理架构的区别&#xff08;packet-based vs full proxy architeture&#xff09; 一个网络设备如果是基于包转发的&#xff0c;则他是一个会话流&#xff08;communication stream&#xff09;的中间设备&#xff0c;而不是…

Atcoder Beginner Contest 311 C - E题讲解

C - Find it! 1. Description Problem Statement There is a directed graph with N N N vertices and N N N edges. The i i i-th edge goes from vertex i i i to vertex A i A_i Ai​. (The constraints guarantee that i ≠ A i i \neq A_i iAi​.) Find a dire…

记负均正 C语言实现

记负均正 描述 首先输入要输入的整数个数n&#xff0c;然后输入n个整数。输出为n个整数中负数的个数&#xff0c;和所有正整数的平均值&#xff0c;结果保留一位小数。 0即不是正整数&#xff0c;也不是负数&#xff0c;不计入计算。如果没有正数&#xff0c;则平均值为0。 数…

【C++】-多态的语法细节详解

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

软路由系统 --- iKuai虚拟机修改虚拟机网卡类型

软路由系统&#xff1a;iKuai 注意&#xff1a;2.0系列及以后版本&#xff0c;默认安装成功后只是绑定了LAN口&#xff0c;其他的接口需要自己进爱快的WEB界面手工绑定。 虚拟机网卡类型说明&#xff1a; 个人版vmware 建议选择Linux ubuntu64位&#xff0c;否则默认网卡类型…

MySQL 数据抽稀 每分钟取一条

假如原始数据为每5秒一个数据&#xff0c;现在想展示为每4分钟一条数据&#xff0c;先按照分钟数把除以4余数为0的行选出来&#xff0c;在按照 年月日 时分&#xff0c;做组内排序&#xff08;窗函数ROW_NUMBER&#xff09;&#xff0c;最后再拿出序号为1的行。 WITH data_01 …

基于SpringBoot+vue的私人健身与教练预约管理系统设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

谈谈区块链技术

目录 1.什么是区块链 2.区块链的实现原理 3.区块链技术有哪些应用 4.区块链技术潜在的危害 5.区块链技术未来会怎么发展 1.什么是区块链 区块链是一种技术&#xff0c;它通过在一个分布式网络中记录和验证交易和数据&#xff0c;实现去中心化的数字账本。区块链的核心概念是…

读数据压缩入门笔记11_读后总结与感想兼导读

1. 基本信息 数据压缩入门 Understanding Compression [美]柯尔特麦克安利斯&#xff08;Colt McAnlis&#xff09;、[美]亚历克斯海奇 著&#xff1b; 王凌云 译 人民邮电出版社,2020年4月出版&#xff0c;1版 1.1. 读薄率 书籍总字数300千字&#xff0c;笔记总字数18197…

Linux用户权限

1.用户、权限、组的概念 1.1 用户 用户 是Linux系统工作中重要的一环&#xff0c;在Linux系统中&#xff0c;不论是由本机或是远程登录系统&#xff0c;每个系统都必须拥有一个账号&#xff0c;一个账号就是一个用户。 1.2 权限 在Linux系统中&#xff0c;每一个用户对不同…

汇编语言(第4版)实验5 编写、调试具有多个段的程序

&#xff08;1&#xff09;参考答案&#xff1a; ①不变&#xff08;0123h,0456h,0789h,0abch,0defh,0cabh,0987h&#xff09; ②076c 076b 076a ③X-2 X-1 &#xff08;2&#xff09;参考答案&#xff1a; ①不变&#xff08;0123h,0456h&#xff09; ②076c 076b 076a ③X-2…

AcWing 1275. 最大数—线段树单点修改

题目链接 AcWing 1275. 最大数 题目描述 分析 这道题是线段树的模板题&#xff0c;属于一眼ding真&#xff0c;鉴定为线段树的裸题&#xff0c;正好用来学习线段树。线段树、树状数组等数据结构题&#xff0c;难的地方是在如何分析出来要用哪个数据结构解决。 线段树要比树状…

上海VR全景展示,快速了解VR全景拍摄

导语&#xff1a; 随着科技的不断进步&#xff0c;虚拟现实技术的应用日益广泛。在这其中&#xff0c;VR全景图片作为一种数字化助力的全景拍摄方式&#xff0c;正逐渐成为人们关注的焦点。通过数字化技术&#xff0c;VR全景图片能够以360度全方位的视角呈现真实的场景&#x…