[git] git基础知识
git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目
git易于学习,性能极快
什么是版本控制?
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况,可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换(版本控制本质就是用git管理文件夹,是为了保留之前所有的版本,以便回滚和修改)
Git的常用命令
① 查看git的版本号
git --version
② 想要让git对一个目录进行版本控制需要以下步骤:
1.进入要管理的文件夹
2.执行初始化命令(初始化本地库)
git init
git init 命令会把这个目录变成git可以管理的仓库
该命令执行完后会在当前目录生成一个 .git 目录,所有 git 所需要的数据和资源都存放在这个目录中
3.管理目录下的文件状态(查看本地库当前的状态,显示有变更的文件)
git status
4.管理指定文件(添加文件到暂存区)
git add 文件名
git add .
5.设置用户签名:用户名称、电子邮箱地址【配置一次即可】
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
提示Tips
1.签名的作用是区分不同操作者身份,用户的签名信息在每一个版本的提交信息中都能够看到,以此确认本次提交是谁做的。git首次安装必须设置一下用户签名,否则无法提交代码
2.注意这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系
6.生成版本(将暂存区内容添加到本地库中)
git commit -m "描述信息"
③ 修改文件后重新添加到本地库中
查看状态(检测到工作区有文件被修改)
git status
将修改的文件再次添加到暂存区
git add .
查看状态(工作区的修改添加到了暂存区)
git status
提交到本地库
git commit -m "描述信息"
④ 版本穿梭(回滚)
查看历史提交记录
git log
git log该命令显示了从最新提交到最早提交的所有提交信息,包括提交的作者、提交日期和提交信息等
git reflog
git reflog该命令也可以查看历史记录
git reflog 查看版本信息
git log 查看版本详细信息
回滚至之前的版本
git log
git reset --hard 版本号
回滚至之后的版本
git reflog
git reset --hard 版本号
⑤ git分支操作
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN

如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过在某个时间点,两个平行宇宙合并了,结果你既学会了git又学会了SVN
在版本控制过程中,同时推进多个任务,我们可以为每个任务单独的创建分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。分支可以简单理解为副本,一个分支就是一个单独的副本
使用分支的好处
1.同时并行推进多个功能开发,提高开发效率
2.各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可
查看分支
git branch -v
创建分支
git branch 分支名称
切换分支
git checkout 分支名称
创建+切换分支
git checkout -b 分支名称
合并分支(把指定的分支合并到当前分支上)
git merge 需要进行合并的分支名称
提示Tips
合并分支有时也会产生冲突 ,产生冲突的原因是合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改,git无法替我们决定使用哪一个,必须人为决定新代码内容
删除分支
git branch -d 需要删除的分支名称
实际应用案例:基于分支紧急修复线上bug
当你接到修复一个代号001的bug的任务时,很自然地,我们可以创建一个分支bug-001来修复它,但是当前正在dev分支上进行的工作还没有提交,我们可以使用git提供的git stash功能,可以把当前工作现场"储藏"起来,等以后恢复现场后继续工作
① 在dev分支上使用如下git指令
git stash
② 首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支
查看分支
git branch -v
切换回master分支
git checkout master
创建并切换到bug-001分支
git checkout -b bug-001
查看现在所处的分支是否为bug分支
git branch -v
③ 在bug-001分支上进行修复出错的代码后,进行提交
git add .
git commit -m "bug修复完成"
④ 提交完成后,切换回master分支,进行分支合并,最后删除bug分支
git checkout master
git merge bug-001
git branch -d bug-001
⑤ 现在bug-001修复完成,是时候接着回到dev分支进行干活了
git checkout dev
git stash pop
提示Tips
修复bug时,我们会通过创建新的bug分支进行修复,然后进行合并,最后进行删除
当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复bug,修复完bug之后,再使用 git stash pop 恢复工作现场
代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
GitLab、GitHub、Gitee码云
局域网
√ GitLab
互联网
√ GitHub(外网)
√ Gitee码云(国内网站)
创建远程库别名
git remote add 别名 远程库地址
查看当前所有远程地址别名
git remote -v
推送本地库分支到远程库
git push 别名 分支
拉取远程库到本地库
git pull 别名 分支
克隆远程库到本地库
git clone 需要克隆的远程库地址
克隆clone会帮我们进行拉取代码、初始化本地仓库以及创建别名
Git常用命令速查表

相关文章:
[git] git基础知识
git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目 git易于学习,性能极快 什么是版本控制? 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况,可以记录文件修改历史…...
【从零学习python 】15.深入了解字符串及字符集编码
文章目录 字符集字符和编码相互转换编码规则 学习目标成员运算符in运算符not in 运算符 进阶案例 字符集 计算机只能处理数字(其实就是数字0和数字1),如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bi…...
【LeetCode】打家劫舍||
打家劫舍|| 题目描述算法分析编程代码 链接: 打家劫舍|| 在做这个题之前,建议大家做一下这个链接: 按摩师 我的博客里也有这个题的讲解,名字是按摩师 题目描述 算法分析 编程代码 class Solution { public:int maxrob(vector<int>nums,int left,…...
【Nginx】Nginx的重定向——location
location 匹配URI location 匹配的规则和优先级;***重点 nginx常用的变量;要求掌握 rewrite 重定向;掌握/理解 location匹配:*** 正则表达式:匹配的是文件内容 常见的正则表达式:…...
每日一题——滑动窗口的最大值
滑动窗口的最大值 题目链接 暴力解法 最容易想到的当然还是通过两层循环来暴力求解:一层循环用来移动窗口,一层循环用来在窗口内找到最大值。这种做法的时间复杂度为O(kN),会超出时间限制,因此,我们要找到更加高效的…...
【使用go开发区块链】之获取链上数据(03)
上篇文章,我们完成了数据库的连接,本章节,我们将完成ethclient的配置以及初始化 1、ethclient配置 1.1、安装go-ethereum 在命令行终端输入下面代码安装: go get github.com/ethereum/go-ethereum1.2、Ethclient配置 1.2.1、新…...
js 动态设置transformOrigin
transformOrigin属性用于指定元素变换的原点。 // 获取要设置的元素 const element document.getElementById(your-element-id);// 设置transformOrigin属性 element.style.transformOrigin 50% 50%; // 以元素中心为原点// 或者使用变量来设置 const x 0; // x坐标 const …...
docker使用tab无法自动补全命令
本文参考链接 一、安装bash-complete 在线安装 yum install -y bash-completion二、刷新文件 source /usr/share/bash-completion/completions/docker source /usr/share/bash-completion/bash_completion...
既然jmeter也能做接口自动化,为什么还需要pytest自己搭框架?
今天这篇文章呢,我会从以下几个方面来介绍: 1、首先介绍一下pytest框架 2、带大家安装Pytest框架 3、使用pytest框架时需要注意的点 4、pytest的运行方式 5、pytest框架中常用的插件 一、pytest框架介绍 pytest 是 python 的第三方单元测试框架&a…...
Objective-C获取变量类型的方法
在Objective-C中,要获取一个对象的类型,可以使用[object class]方法。这将返回一个Class对象,表示该对象的类型。 另外,typeid是C中的关键字,用于获取一个变量的类型信息。在Objective-C中,typeid并不适用于…...
相机可见区域,使用鼠标拖拽模型
知识点 向量射线检测坐标转换 思路 使用射线检测获取射线检测点与模型对象之间的偏移量 (世界空间)使用相机的坐标转换获取检测点与鼠标位置之间的偏移量 (屏幕空间)拖拽时,更新模型位置 代码示例 using UnityEng…...
Vue 2 与 Vue 3 的全面比较
Vue 2 与 Vue 3 的全面比较 1. 性能提升 Vue 3 的性能得到了显著提升。虚拟 DOM 已经重写,使补丁过程更快。 对比: Vue 3 使用了基于 Proxy 的新观察者机制,取代了 Vue 2 的基于 Object.defineProperty 的观察者。 Object.definePropert…...
Unity学习笔记--如何优雅简便地利用对象池生成游戏对象(进阶版)LRU + 对象池
前言 之前写过一篇关于对象池的文章,现在来看写的并不是很好,所以来考虑优化下。 现在来看一年前写的代码,越看越不能入目hhh Unity学习笔记–如何优雅简便地利用对象池生成游戏对象 前置知识 Unity学习笔记–使用 C# 开发一个 LRU 代码实…...
【Spring专题】Bean的声明周期流程图
前言 我向来不主张【通过源码】理解业务,因为每个人的能力有限,甚至可能会因为阅读错误导致出现理解上的偏差,所以我决定,还是先帮大家【开天眼】,先整体看看流程图,好知道,Spring在写源码的过…...
C++实现俄罗斯方块(源码+详解)
👂 Take me Hand Acoustic - Ccile Corbel - 单曲 - 网易云音乐 源码Debug工具 (1)cppreference.com (主) (2)必应 (bing.com) (3)GPT(主) &#…...
01:STM32点灯大师和蜂鸣器
目录 一:点亮1个LED 1:连接图 2:函数介绍 3:点灯代码 二:LED闪烁 1:函数介绍 2:闪烁代码 三:LED流水灯 1:连接图 2:函数介绍 3:流水灯代码 四:蜂鸣器 1:连接图 2:蜂鸣器代码 一:点亮1个LED 1:连接图 因为IO口与LED负极相连所以IO口输出低电频,点亮LED (采用的是低…...
linux pwn 基础知识
环境搭建 虚拟机安装 镜像下载网站为了避免环境问题建议 22.04 ,20.04,18.04,16.04 等常见版本 ubuntu 虚拟机环境各准备一份。注意定期更新快照以防意外。虚拟机建议硬盘 256 G 以上,内存也尽量大一些。硬盘大小只是上界&#…...
Unity Poisson分布 【由ChatGPT生成】
Unity Poisson分布 【由ChatGPT生成】 前言项目Unity场景布置代码编写添加并设置脚本运行效果总结 前言 在Unity游戏开发中,数学和统计学的概念常常用于解决各种问题,从资源分配到游戏机制的设计。本文将探讨Poisson分布在Unity游戏开发中的实际应用和作…...
permission denied while trying to connect to the Docker daemon socket 错误
安装 docker 执行错误如下: $ docker pspermission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json”: dial unix /var/run/docker.sock: connect:…...
pytorch nn.ModuleList和nn.Sequential的用法笔记
有部分内容转自: pytorch小记:nn.ModuleList和nn.Sequential的用法以及区别_慕思侣的博客-CSDN博客 但是有部分内容做了修改调整, 在构建网络的时候,pytorch有一些基础概念很重要,比如nn.Module,nn.ModuleList,nn.Sequential,这些类我们称为为容器(containers),可…...
别再手动写CORS过滤器了!Spring Cloud Gateway 3.x 跨域配置,一个application.yml文件全搞定
Spring Cloud Gateway 3.x 跨域配置实战:告别繁琐代码,拥抱YAML声明式配置 微服务架构下,前后端分离的开发模式已成为主流,而跨域问题就像一位不请自来的"门卫",总是阻拦着前端应用与后端服务的正常对话。传…...
CentOS7上Oracle 19c RPM安装保姆级避坑指南(从防火墙到环境变量)
CentOS7上Oracle 19c RPM安装全流程避坑实战手册 引言:为什么你的Oracle安装总是失败? 在CentOS7上部署Oracle 19c看似简单,但实际操作中90%的运维人员都会遇到各种"坑"。这些隐藏问题往往不会在官方文档中明确提示,却能…...
Agent 一接浏览器下载就开始拿错文件:从 Download Binding 到 Artifact Ledger 的工程实战
⚠️ 下载链路最危险的错,不是按钮点不动,而是拿到了“看起来像对的文件” 很多团队把 Browser Agent 接到报表导出、合同归档和工单附件流转后,最隐蔽的事故不是下载失败,而是下载成功却拿错了对象。⚠️ 用户明明在客户 A 的页面…...
【2024 Laravel AI生产环境故障白皮书】:基于172个真实项目日志分析的TOP 5致命报错及Hotfix补丁包
更多请点击: https://intelliparadigm.com 第一章:Laravel 12 AI集成故障的底层归因模型与防御范式演进 Laravel 12 引入了原生异步任务调度、更严格的类型约束及基于 PHP 8.3 的 JIT 兼容性增强,但其与外部 AI 服务(如 LLM API…...
季中OTB为什么总是失控:鞋服零售商品企划的核心矛盾与解法
很多鞋服品牌在做季前商品企划时,OTB计划看起来是平衡的——总量控制住了,品类分配合理,交货节奏也排好了。但到了季中,往往会发现实际采购金额已经偏离计划15%以上,有些品类严重超买,有些该追加的爆款却因…...
APP兼容性测试前期准备全攻略:筑牢测试根基,保障应用适配无忧
兼容性测试是确保App在不同设备、系统版本和网络环境下稳定运行的关键环节。在正式开始测试之前,充分的准备工作能大幅提升效率与覆盖率。一、明确兼容性测试核心目标与范围首先要清晰界定测试目标,避免测试工作盲目开展。核心目标是验证APP在不同终端、…...
从手机全景到安防监控:聊聊图像拼接(Image Stitching)技术在实际项目里的那些坑
图像拼接实战指南:从算法原理到工程避坑 当你在旅游景点举起手机拍摄全景照片时,是否好奇过背后的技术如何将多张照片无缝拼接?当安防监控系统需要将多个摄像头画面整合成全景视图时,工程师们又面临哪些挑战?图像拼接技…...
别再手动发邮件了!用Python的smtplib和email库,5分钟搞定邮件自动发送(附Gmail/QQ邮箱配置)
用Python解放双手:5分钟搭建高可靠邮件自动化系统 每天早晨9点准时发送日报,每周五下午3点自动推送周报,批量给客户发送个性化营销邮件...这些重复性工作正在吞噬职场人的宝贵时间。作为曾经每天手动发送30封邮件的过来人,我深刻…...
保姆级教程:在TensorFlow 2.x上复现开源NSFW图像识别模型(附完整代码)
从零构建TensorFlow 2.x环境下的NSFW识别系统:工程化迁移指南 当我们需要在内容平台部署自动化审核系统时,开源NSFW(Not Safe For Work)识别模型往往成为首选方案。但现实情况是,GitHub上大量优质模型仍停留在TensorFl…...
GESP2025年6月认证C++五级( 第二部分判断题(1-10))
🎯 第1题:gcd万能吗?1、🌈故事数学骑士拿出一个函数:👉 不管 a > b 还是 a < b,都能算最大公约数!2、🧠判断步骤① 核心代码:while (b) {int temp b;b…...
