版本控制工具——Git

版本控制工具——Git

  • 前言
  • 一、版本库
  • 二、git的工作区域和文件状态
  • 三、添加和提交文件
  • 四、回退版本:git reset --模式 版本号
  • 五、查看差异:git diff
  • 六、从版本库中删除文件
  • 七、.gitignore:git中的特殊文件
  • 八、Git、GitHub跟Sourcetree的关系
  • 九、Github基础使用
  • 十、关联本地仓库和远程仓库
  • 十一、分支简介
  • 十二、解决冲突
  • 十三、rebase和回退
  • 十四、分支管理和工作流模型


前言

Git相关知识我是看的B站GeekHour老师的视频学的,亲测是我个人觉得讲得最能听懂的一位!推荐推荐(其他老师也都很厉害,是我太菜🥹),以下是做的学习笔记
GeekHour老师的一小时Git教程链接

一、版本库

版本库(仓库)简称Repo,可以理解为一个目录,这个目录下所有文件都可以被git管理起来,每个文件的修改、删除、添加等操作,git都能够跟踪到,以便任何时候都可以追踪历史或者还原到之前的某个版本
创建仓库的两种方式:
git init:在电脑本地创建仓库
git clone:从github这种远程服务器上克隆一个已经存在的仓库

二、git的工作区域和文件状态

git的本地数据分为三个区域:工作区(实际操作的本地工作目录)、暂存区(用于保存即将提交到git仓库的修改内容)和本地仓库(git存储代码和版本信息的主要位置)
在这里插入图片描述

三、添加和提交文件

git init:创建仓库

git status:查看仓库状态

git add:添加到暂存区,如:
git add file1.txt
git add *.txt 将当前文件夹下所有txt格式的文件都添加到暂存区
git add . 将当前文件夹下的所有文件都添加到暂存区

git commit:提交到仓库 (git commit -m"第二次提交")
【注】不加-m的话就会进入图形界面来进行提交
git log 查看仓库提交记录(git log --oneline可查看简洁的提交记录)

四、回退版本:git reset --模式 版本号

选择soft、hard、mixed三种模式,决定了在回退版本后,工作区和暂存区的内容是否会被清空:

工作区暂存区
git reset --soft不会清空不会清空
git reset --hard会清空会清空
git reset --mixed不会清空会清空

【注1】就算回退到原始版本了,也可以通过 git reflog命令查看各个版本号,再通过git reset来回到新版本号就行了
【注2】git reset --模式 HEAD^ 表示快捷地回退到上一个版本号

五、查看差异:git diff

查看工作区、暂存区、本地仓库之间的差异:
git diff:查看工作区与暂存区的差异,显示发生更改的文件以及更改的详细信息,没有返回内容就说明没有差异
git diff HEAD:比较工作区和库之间的差异
git diff CACHED:比较暂存区和库之间的差异
查看不同版本之间的差异:
git diff 版本号1 版本号2
git diff HEAD~ HEAD(或者git diff HEAD^ HEAD ):直接比较最新版本和上一个版本
git diff HEAD~2 HEAD:直接比较最新版本和上两个版本
git diff HEAD~ HEAD file1.txt:比较最新版本和上一个版本中file1.txt的差异
也可查看不同分支之间的差异

六、从版本库中删除文件

方式一:直接删除文件后提交
首先在本地工作区删除文件,再在暂存区中删除(使用的是add:git add .),再提交
方式二:git rm
在工作区、暂存区同时删除了

git rm file2.txt

【注1】一定要记得删除后要提交,库中的文件才会删除
【注2】git rm --cached file.txt就只会在版本库中将其删除

七、.gitignore:git中的特殊文件

让我们忽略掉一些不该被添加到版本库中的文件
一般会忽略掉 系统或软件自动生成的文件;编译产生的中间文件和结果文件;运行时生成日志文件、缓存文件、临时文件;涉及身份、密码、口令、秘钥等敏感信息文件

举例:将access.log这个文件忽略掉:

echo access.log>.gitignore

【注】.gitignore生效有个前提:这个文件不能是已经被添加到版本库中的文件,要想忽略它就必须先从库中删除

八、Git、GitHub跟Sourcetree的关系

Git是基础的版本控制工具;GitHub是基于Git构建的线上社区和仓库托管平台,让开发者能够相互协作和分享;而Sourcetree则是为了简化和提升Git操作体验的图形化客户端工具

九、Github基础使用

生成SSH KEY
克隆仓库:git clone github上的仓库名
在本地库中更新文件,使用git push推送更新的内容
拉取更新内容:git pull

十、关联本地仓库和远程仓库

本地已经有了一个仓库,怎么放到远程仓库:
cd到该仓库地址下
依次复制粘贴运行github上提示的代码:

git remote add origin git@github.com:geekhall-laoyang/first-repo.git
git branch -M main
git push -u origin main

十一、分支简介

多个开发人员可以在自己的分支上进行开发工作,最后再合并到主线上,或者建立一个问题修复的分支来处理一些bug和缺陷,这样就可以让主线代码仓库始终处于一个稳定状态,让每个人员可以独立地开发和测试
git branch :查看当前处于哪个分支上,并且一共有哪些分支
git branch 分支名 : 可以创建一个分支,但此时还没有切换到该分支上
git switch 分支名 :可以切换到该分支上
git merge 分支名 :切换到main分支上后,使用该命令可以将指定的分支合并到main上
git branch -d 分支名 : 删除已经合并到main上的某个指定分支
git branch -D 分支名 :强制删除某个指定的分支,就算它没有合并到main也可以删除

十二、解决冲突

如果两个分支有重复内容的话(两个分支修改了同一个文件的同一行代码),git就不知道该保留哪个分支的修改内容了,也就产生了冲突,就需要手动去解决
在这里插入图片描述

十三、rebase和回退

rebase:变基
git rebase 分支名
什么情况下使用rebase:一般来说,如果只是想把两个分支合并起来而不关心提交历史,那就使用merge,如果确定只有自己一个人在这个分支上进行开发,且希望提交历史更直观明了一些就使用rebase
1、merge要先切换到main分支上再执行merge操作,而rebase可以在任意分支上执行
2、merge优点:不会破坏原分支的提交历史,方便回溯和查看;merge缺点:会产生额外的提交节点,分支图比较复杂
3、rebase优点:不会新增额外的提交记录,会形成线性历史,比较直观干净;rebase缺点:会改变提交历史,改变了当前分支的节点,避免在共享分支时使用(一般不会在公共的分支上执行rebase操作)

回退:
将某个已删除的指定分支恢复到某个指定提交时间点的状态:git checkout -b 分支名 提交id
(将仓库恢复到指定提交时间点的状态使用上述的reset)

十四、分支管理和工作流模型

1、常见的工作流模型:
GitFlow模型:
在这里插入图片描述
GitHubFlow模型:
在这里插入图片描述
2、分支的命名规范
推荐使用带有意义的描述性名称来命名分支
版本发布分支/Tag示例:v1.0.0
功能分支示例:feature-login-page
修复分支示例:hotfix-#issueid-desc

3、分支管理
定期合并已经成功验证的分支,即使删除已经合并的分支,保持合适的分支数量,并为分支设置合适的管理权限

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

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

相关文章

python多线程连接MySQL查数案例

该博文展示地是基本示例,实际使用时可能需要进行调整。例如,你可能需要添加错误处理来确保数据库连接问题不会导致脚本崩溃,或者你可能需要调整查询以匹配你的数据。 此外,你需要确保你的系统有足够的内存和处理能力来支持并行处理…

【JS逆向一】逆向某站的 加密参数算法--仅供学习参考

逆向日期:2024.02.06 使用工具:Node.js 文章全程已做去敏处理!!! 【需要做的可联系我】 可使用AES进行解密处理(直接解密即可):在线AES加解密工具 1、打开某某网站(请使用文章开头的…

有道ai写作,突破免费限制,无限制使用

预览效果 文末提供源码包及apk下载地址有道ai写作python版 import hashlib import time import json import ssl import base64 import uuidfrom urllib.parse import quote import requests from requests_toolbelt.multipart.encoder import MultipartEncoder from Crypto.C…

SpringSecurity+OAuth2权限管理实战

Spring Security快速入门 官方文档: Spring Security :: Spring Security 功能: 身份认证(authentication) 授权(authorization) 防御常见攻击(protection against common attacks&#xff…

DAY44:完全背包问题介绍、518、377

完全背包 定义:有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 01背包的核心…

Oracle篇—logminer日志挖掘恢复误操作数据

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…

YouTrack 用户登录提示 JIRA 错误

就算输入正确的用户名和密码,我们也得到了下面的错误信息: youtrack Cannot retrieve JIRA user profile details. 解决办法 出现这个问题是因为 YouTrack 在当前的系统重有 JIRA 的导入关联。 需要把这个导入关联取消掉。 找到后台配置的导入关联&a…

FPGA_简单工程_无源蜂鸣器驱动实验

一 理论 蜂鸣器按其结构可分为电磁式蜂鸣器和压电式蜂鸣器2中类型,按其有无信号源,分为有源蜂鸣器和无源蜂鸣器。 有源蜂鸣器,内部装有集成电路,不需要音频驱动电路,就直接能发出声响,而无源蜂鸣器&#…

AWS配置内网EC2服务器上网【图形化配置】

第一种方法:创建EC2选择启用分配公网ip 1. 创建vpc 2. 创建子网 3. 创建互联网网关 创建互联网网关 创建互联网网关 ,设置名称即可 然后给网关附加到新建的vpc即可 4. 给新建子网添加路由规则,添加新建的互联网网关然后点击保存更改 5. 新建…

HTTP协议笔记

HTTP协议笔记 参考: (建议精读)HTTP灵魂之问,巩固你的 HTTP 知识体系 《透视 HTTP 协议》——chrono 目录: 1、说说你对HTTP的了解吧。  1. HTTP状态码。  2. HTTP请求头和响应头,其中包括cookie、跨域响…

SQL世界之命令语句Ⅲ

目录 一、SQL JOIN 1.JOIN 和 Key 2.使用 JOIN 3.不同的 SQL JOIN 二、SQL INNER JOIN 关键字 1.SQL INNER JOIN 关键字 2.INNER JOIN 关键字语法 3.内连接(INNER JOIN)实例 三、SQL LEFT JOIN 关键字 1.SQL LEFT JOIN 关键字 2.LEFT JOIN 关…

【doghead】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行2

【bifrost】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行1 完成了WSL2的安装。13900K 的电脑安装了ubuntu22.04构建中出现了一些问题,fix了。发现libuv 似乎不识别,认为是libuv.so ,无法让worker识别到uv 从而没构建。干脆单独构建好了,官方的脚本如此:而且…

bert分类模型使用

使用 bert-bert-chinese 预训练模型去做分类任务,这里找了新闻分类数据,数据有 20w,来自https://github.com/649453932/Bert-Chinese-Text-Classification-Pytorch/tree/master/THUCNews 数据 20w ,18w 训练数据,1w 验…

代码随想录算法训练营Day51|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、股票问题总结

目录 309.最佳买卖股票时机含冷冻期 前言 思路 算法实现 714.买卖股票的最佳时机含手续费 前言 思路 算法实现 股票问题总结 309.最佳买卖股票时机含冷冻期 题目链接 文章链接 前言 本题在买卖股票II的基础上增加了一个冷冻期,因此就不能简单分为持有股票和卖…

【JavaWeb】头条新闻纯JavaWeb项目实现 项目搭建 数据库工具类导入 跨域问题 Postman 第一期 (前端Vue3+Vite)

文章目录 一、项目简介1.1 微头条业务简介1.2 技术栈介绍 二、项目部署三、准备工具类3.1 异步响应规范格式类3.2 MD5加密工具类3.3 JDBCUtil连接池工具类3.4 JwtHelper工具类3.4 JSON转换的WEBUtil工具类 四、准备各层的接口和实现类4.1 准备实体类和VO对象4.2 DAO层接口和实现…

222. 完全二叉树的节点个数 - 力扣(LeetCode)

题目描述 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干…

[职场] 线束设计求职简历范文 #媒体#其他#笔记

线束设计求职简历范文 线束设计是指根据汽车电气系统的需求和规范,进行车载线束的布局、连接和组装的过程。下面是线束设计求职简历范文,供大家参考。 个人信息 姓名:蓝山 年龄:26岁 地址:东莞 工作经验&#xff…

C++面试宝典第27题:完全平方数之和

题目 给定正整数 n,找到若干个完全平方数(比如:1、4、9、16、...),使得它们的和等于n。你需要让组成和的完全平方数的个数最少。 示例1: 输入:n = 12 输出:3 解释:12 = 4 + 4 + 4。 示例2: 输入:n = 13 输出:2 解释:13 = 4 + 9。 解析 这道题主要考察应聘者对于…

MFC研发自验用例编写应注意哪些关键测试点

MFC(Microsoft Foundation Classes)是一个用于开发Windows应用程序的C类库。在MFC应用程序的研发过程中,自验用例(自我验证测试用例)的编写是非常重要的一环,它有助于确保代码的质量、稳定性和功能正确性。…

Docker安装ElasticSearch8.9.0

安装ElasticSearch8.9.0 预先配置 1.在centos虚拟机中,修改配置sysctl.conf vim /etc/sysctl.conf2.加入配置 vm.max_map_count262144 3.启用配置 sysctl -p 注:这一步是为了防止启动容器时,报出如下错误: bootstrap checks …