快速上手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…...

机器学习 之 线性回归算法
目录 线性回归:理解与应用 什么是线性回归? 一元线性回归 正态分布的重要性 多元线性回归 实例讲解 数据准备 数据分析 构建模型 训练模型 验证模型 应用模型 代码实现 线性回归:理解与应用 线性回归是一种广泛使用的统计方法&…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...