快速上手Git
Git相关概念
Git是一个开源的分布式版本控制系统,由Linus Torvalds在2005年创建,用于有效、高速地处理从小到大的项目版本管理。它是由 Linux 之父 Linus Torvalds 开发的,并已经成为了现代软件开发领域中最流行的版本控制系统之一。
git的工作模式

不同于SVN的集中式两层模式,Git在整体架构上是三层数据交换,即workspace、Respository、Remote。
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
Workspace:工作区
工作区是你当前电脑中的一个目录,它包含了你正在工作的项目的文件。也就是我们本地操作的文件,处于工作区的文件的更改在提交之前不会记录在Git的版本历史中。
Index / Stage:暂存区
暂存区是工作区和仓库区之间的一个中间区域,用于准备下一次提交。我们日常使用时,新增文件,再未执行add命令之前,它是属于工作区的,当add之后,则是属于暂存区。
Repository:仓库区(或本地仓库)
这是git在本地生成的一片区域,用来存放执行了commit之后的内容,Git用仓库区来保存项目历史,这里包含了项目的完整历史记录,包括所有的提交、分支、标签等。
仓库区是本地的,不与远程仓库直接交互。也就说在未进行push之前,你的所有改动、调整都还是在你的本机中,并未同步到远端,也不会影响其他人
Remote:远程仓库
远程仓库是托管在服务器上的版本库,主要用于多个开发者之间的协作,这里远程仓库才相当于SVN的服务端,可以理解为最终存放稳定代码的地方。


总体来看,git进行文件管理的流程是:
- 先在本地初始化本地仓库(包含了暂存区)
- 编辑文件
- 协作场景:使用fetch或clone,将远程仓库内容同步到本地仓库中,然后checkout到工作区
- 新增场景:直接在本地(工作区)新增文件
- 将文件 add 到 暂存区
- 使用commit,将暂存区文件同步到本地仓库中
- 使用pull,将本地仓库中的内容同步到远程仓库
git的分支
相比于svn的一个分支即一个目录的管理方式,git的分支管理则更为强大。

- master:主分支,负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。
- develop:开发分支,该分支记录相对稳定的版本,所有的
feature分支和bugfix分支都从该分支创建。 - release:发布分支,用于代码上线准备,该分支从
develop分支创建,创建之后由测试人员发布到测试环境进行测试,测试过程中发现 bug 需要开发人员在该release分支上进行 bug 修复,修复完成自测没问题后,在上线之前,需要合并该release分支到master分支,同时需要再合并该分支到develop分支。
平时开发工作中,会根据需要由开发人员创建几类临时分支:
- feature:特性(功能)分支,用于开发某个特定的功能,该分支从
develop分支创建,不同的功能创建不同的功能分支,开发完成自测没问题后,需要合并该分支到develop分支,之后删除该分支。 - hotfix:热修复分支,用于修复某个紧急的 bug,该分支只有在紧急情况下使用,该分支从
master分支创建,用于紧急修复线上的 bug,修复完成自测没问题后,需要合并该分支到master分支,以便上线,同时需要再合并该分支到develop分支,之后删除该分支。
Git常用实操
安装连接Git
安装
首先本地安装Git客户端,直接去 Git 官网下载对应系统的软件了,下载地址为 git-scm.com

下载后傻瓜式 “next” 安装git即可。

安装后,可在菜单路径找到:


右键随处打开git的命令行,执行 git -v后,出现版本,至此,客户端安装完成。
远程仓库认证连接
进行全局配置
首先,设置全局账号、邮箱配置
//--global 表示对所有git工程都有效
//设置用户名:
git config --global user.name 用户名
//设置邮箱:
git config --global user.email 邮箱

此部分的配置存放在当前用户主目录下:C:\Users\admin\.gitconfig下 ,可直接进行修改
配置ssh key
本地Git仓库和GitHub仓库之间的传输是通过SSH加密传输的,所以需要配置ssh key
打开git客户端命令行
ssh-keygen -t rsa -C ${上一步配置的邮箱}

生成ssh key 文件,一般存放于用户的根目录下。

.ssh目录下存放SSH Key的秘钥对:id_rsa是私钥,不能泄露;id_rsa.pub是公钥,可以公开。
git仓库认证
这里我以外网公共服务Gitee - 基于 Git 的代码托管和研发协作平台 作为远端代码管理仓库为例,将本地的git与远端关联。
登录Gitee后,找到个人账号设置,找到公钥SSH:

根据要求将id_rsa.pub文件内容填写到相应位置
最常使用
拉取项目
初始化本地仓库
在拉取远端仓库里的项目之前,需要先在本地新建或者找一个空的文件夹,用来充当本地仓库
对选定的文件夹执行初始化命令:
git init

初始化后,所选文件夹下会出现.git隐藏目录,此时说明初始化本地仓库完成
进行项目拉取
此时你的团队团队告知项目远程仓库的地址,需要将项目从远程仓库拉取到本地仓库
git clone https://XXXXXX/xxx/xx.git
分支操作
进入到你拉取的项目目录后:

查看分支
//查看本地仓库和远程仓库对于该项目的全部分支
git branch -a //查看远程仓库该项目的全部分支
git branch -r

绿色则代表本地记录了该分支,红色则表示该分支目前仅在远程仓库,并未到本地仓库
切换分支
看到项目后,我们一般是master分支(main分支),我们开发一般是使用feature分支,此时需要切换所在分支,使用checkout命令
//单纯切换为远端的分支
git checkout [远端分支名]//拉取远端分支到本地仓库,并且自定义该分支在本地仓库中的名称,然后切换到该分支
git checkout -b [本地分支自定义名] [远端分支名]

更新项目
- 远程分支被别人更新了,你需要更新代码
$ git pull origin <branch-name>
- 本地有修改,不能直接git pull
$ git stash # 工作区修改暂存
$ git pull # 更新分支
$ git stash pop # 暂存修改恢复到工作区
提交
首先,需要查看文件的状态,可以在项目目录下使用 git status命令:
这个命令会显示当前工作目录中未提交(uncommitted)的更改,包括以下几个方面:
- 未跟踪的文件(Untracked files):这些是新创建的文件,Git 还没有将其纳入版本控制。(如果想提交,需要先执行 git add,再commit)
- 已修改的文件(Modified files):这些文件已经被修改,但尚未添加到暂存区(提交时,直接commt即可)。
- 已暂存的文件(Staged files):这些文件的更改已经被添加到暂存区,准备在下一次提交时被包括进去。(已经commit的文件)
- 冲突的文件(Conflicted files):如果在合并过程中出现冲突,这些文件会在解决冲突之前显示为冲突状态。


# 查看目录下文件状态
$ git status# 执行add后,文件状态改变为已跟踪未提交
$ git add --all # 当前项目下的所有更改
$ git add . # 当前目录下的所有更改
$ git add xx/xx.py xx/xx2.java # 添加某几个文件# 执行commit 后,文件状态改为已提交
$ git commit -m"<这里写commit的描述>"# 执行push 后,文件状态为已推送
$ git push -u origin master #第一次需要关联上
$ git push #之后再推送就不用指明应该推送的远程分支了
推荐一个git命令练习工具: Learn Git Branching
相关文章:
快速上手Git
Git相关概念 Git是一个开源的分布式版本控制系统,由Linus Torvalds在2005年创建,用于有效、高速地处理从小到大的项目版本管理。它是由 Linux 之父 Linus Torvalds 开发的,并已经成为了现代软件开发领域中最流行的版本控制系统之一。 git的工…...
RTC时钟测试
1. 基础知识 Linux 的系统时间有时跟硬件时间是不同步的。 Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIO…...
大数据技术——实战项目:广告数仓(第六部分)报表数据导出至clickhouse
目录 第11章 报表数据导出 11.1 Clickhouse安装 11.2 Clickhouse建表 11.2.1 创建database 11.2.2 创建table 11.3 Hive数据导出至Clickhouse 第11章 报表数据导出 由于本项目最终要出的报表,要求具备交互功能,以及进行自助分析的能力,…...
Android studio模拟制作-简易的订餐交易小案例
一、最终呈现效果 订餐支付小案例效果 二、布局设计activity_main.xml <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xml…...
消防隐患在线小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,消防隐患举报管理,消防隐患分类管理,统计分类管理,处理结果管理,系统管理 微信端账号功能包括:系统首页,我…...
【Vue3】路由Params传参
【Vue3】路由Params传参 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日…...
授权cleanmymac访问全部磁盘 Mac授权访问权限 cleanmymac缺少权限
CleanMyMac是Mac系统下的一款专业的苹果电脑清理软件,同时也是一款优秀的电脑系统管理软件。它能有效清理系统垃圾,快速释放磁盘内存,缓解卡顿现象,保障系统顺畅地运行。 全磁盘访问权限,就好比机场内进行的安全检查。…...
Ubuntu/18.04 LTS下编译 BoringSSL 库
1、准备一个 Ubuntu/18.04 LTS 系统的设备 2、安装软件 GIT、GCC、CMAKE、G、Golang:1.16 及以上版本 3、克隆仓库源 git clone https://boringssl.googlesource.com/boringssl cd boringssl 4、使用特定版本 git checkout 9fc1c33e9c21439ce5f87855a6591a9324e569fd 5、编…...
【stm32项目】多功能智能家居室内灯光控制系统设计与实现(完整工程资料源码)
多功能智能家居室内灯光控制系统设计与实现 目录: 目录: 前言: 一、项目背景与目标 二、国内外研究现状: 2.1 国内研究现状: 2.2 国外研究现状: 2.3 发展趋势 三、硬件电路设计 3.1 总体概述 3.2 硬件连接总…...
xss靶场详解
目录 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 8.第八题 1.第一题 在源码script标签里边,innerhtml是用于访问或修改 HTML 元素内的 HTML 内容的,这里是访问spaghet这个元素的,并通过括号里面的东西搜索当前…...
华为的流程管理
华为建设流程体系始于2000年,那时华为公司面临着快速扩张和全球化发展的挑战,意识到传统的管理模式已经无法满足业务发展的需求。为了提高公司的管理效率和竞争优势,华为决定启动流程体系的建设。在建设过程中,华为借鉴了业界最佳…...
操作系统Linux
1.Linux命令 ls:查看当前目录下所有目录和文件ps:查看所有正在运行的进程top:显示当前系统中占用资源最多的一些进程,shiftm按照内存查看大小netstat:查看端口的命令vi:查看文件的命令rm:删除文…...
1、.Net UI框架:MAUI - .Net宣传系列文章
.NET MAUI(Multi-platform App UI)是一个跨平台的UI框架,它是.NET统一应用模型的一部分,允许开发者使用C#和.NET来创建适用于iOS、Android、macOS和Windows的应用程序。MAUI继承了Xamarin.Forms的一些概念,但提供了更多的原生平台集成和改进的…...
Spring boot 使用 jSerialComm 对串口使用发送信息并接收
什么是 jSerialComm? jSerialComm 是一个 Java 库,旨在提供一种独立于平台的方式来访问标准串行端口,而无需外部库、本机代码或任何其他工具。它旨在替代 RxTx 和(已弃用的)Java Communications API,具有更…...
江协科技STM32学习笔记(第10章 SPI通信)
第10章 SPI通信 10.1 SPI通信协议 10.1.1 SPI通信 SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线; 串行外设接口; I2C无论是软件还是软件电路,设计的都还是比较复杂的,硬件…...
力扣热题100_回溯_22_括号生成
文章目录 题目链接解题思路解题代码 题目链接 22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:[“((()))”,“(()())”,“(())()…...
【k8s】ubuntu24.04 containerd 手动从1.7.15 换为1.7.20
24.04的这个应该是apt 安装的1.7.20-1 root@k8s-master-pfsrv:~# sudo apt update && sudo apt install containerd.io -y 命中:1 http://mirrors.aliyun.com/docker-ce/linux/ubuntu noble InRelease 命中:2 https://dl.google.com/linux/chrome/deb stable InRelease…...
Java二十三种设计模式-备忘录模式(19/23)
本文深入探讨了备忘录模式,从定义、组成、实现到使用场景、优缺点、与其他模式的比较,以及最佳实践和替代方案,全面解析了如何在软件开发中有效地保存和恢复对象状态,以支持复杂的撤销操作和历史状态管理。 备忘录模式:…...
js一些杂乱理解
js 的值类型和引用类型 引用类型:object,array,function值类型:诸如number,stringboolean,null,Undefined,Symbol js使用变量访问对象属性示例 var myDog "Hunter"; var dogs { Fido: "Mutt", Hunter: "Doberman", Snoopie: "Beagle&q…...
机器学习 之 线性回归算法
目录 线性回归:理解与应用 什么是线性回归? 一元线性回归 正态分布的重要性 多元线性回归 实例讲解 数据准备 数据分析 构建模型 训练模型 验证模型 应用模型 代码实现 线性回归:理解与应用 线性回归是一种广泛使用的统计方法&…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
