Git 使用指南:从基础到实战
Git 是目前最流行的分布式版本控制系统,广泛应用于软件开发、项目协作和版本管理。本文详细介绍 Git 的基础操作、工作流程、分支管理、常见问题解决方法以及进阶技巧,帮助开发者在日常工作中高效地使用 Git。
目录
- 一、Git 基础概念
- 1.1 版本控制
- 1.2 Git 工作区域
- 二、Git 基本操作
- 2.1 初始化仓库
- 2.2 配置用户信息
- 2.3 添加与提交文件
- 2.4 查看状态和历史
- 三、Git 分支管理
- 3.1 创建与切换分支
- 3.2 合并分支
- 3.3 删除分支
- 四、Git 与远程仓库
- 4.1 添加远程仓库
- 4.2 推送到远程仓库
- 4.3 拉取远程更新
- 4.4 克隆仓库
- 五、常见问题和解决方法
- 5.1 “not have locally” 错误
- 5.2 合并冲突
- 5.3 回滚到特定提交
- 5.4 撤销最近一次提交
- 六、高级 Git 技巧
- 6.1 使用 Git Stash 暂存变更
- 6.2 Git Rebase 变基
- 6.3 创建标签
- 七、结语
一、Git 基础概念
1.1 版本控制
版本控制用于记录代码的变动历史,便于团队协作和版本回溯。Git 是分布式版本控制系统,允许开发者在本地独立进行代码管理,不依赖中央服务器,并在需要时将更改同步到远程仓库。
1.2 Git 工作区域
Git 的操作主要围绕三个区域:
- 工作区 (Working Directory):实际操作的文件夹。
- 暂存区 (Staging Area):用于临时存放变更的区域。
- 本地仓库 (Local Repository):保存项目的提交历史。
工作流程通常是:编辑工作区文件、将变更添加到暂存区、提交暂存区内容到本地仓库。
二、Git 基本操作
2.1 初始化仓库
在一个文件夹中初始化 Git 仓库:
git init
2.2 配置用户信息
首次使用 Git 时需要配置用户名和邮箱以记录提交信息。可以使用以下命令进行全局配置:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
如果需要在项目级别配置用户名和邮箱,则进入项目的 .git/config
文件,添加 [user]
节:
[user]name = Project Nameemail = project.email@example.com
或使用以下命令直接在项目中进行配置:
git config user.name "Project Name"
git config user.email "project.email@example.com"
2.3 添加与提交文件
-
添加文件到暂存区:
git add <file> # 添加单个文件 git add . # 添加当前目录下所有文件
-
提交文件到本地仓库:
git commit -m "提交说明"
2.4 查看状态和历史
-
查看文件状态:
git status
-
查看提交历史:
git log --oneline
三、Git 分支管理
分支允许在不同的分支上并行开发功能、修复 Bug,便于版本管理。
3.1 创建与切换分支
git branch <branch-name> # 创建新分支
git checkout <branch-name> # 切换分支
git checkout -b <branch-name> # 创建并切换到新分支
3.2 合并分支
将一个分支的更改合并到当前分支中:
git merge <branch-name>
3.3 删除分支
删除不再需要的分支:
git branch -d <branch-name>
四、Git 与远程仓库
4.1 添加远程仓库
将本地仓库与远程仓库(如 GitHub、GitLab)关联:
git remote add origin <仓库地址>
4.2 推送到远程仓库
将本地更改推送到远程仓库:
git push origin <branch-name>
4.3 拉取远程更新
将远程仓库的更改拉取并与本地合并:
git pull origin <branch-name>
4.4 克隆仓库
克隆远程仓库到本地:
git clone <仓库地址>
五、常见问题和解决方法
5.1 “not have locally” 错误
问题:推送代码时提示“not have locally”。
原因:远程仓库有新的提交,本地未同步。
解决:
git pull origin <branch-name>
git push origin <branch-name>
5.2 合并冲突
问题:分支合并时出现冲突。
原因:两个分支在同一文件的更改冲突。
解决:手动解决冲突,保存后提交:
git add <file>
git commit -m "解决冲突"
5.3 回滚到特定提交
问题:回到特定版本的状态。
解决:
git reset --hard <commit-id>
5.4 撤销最近一次提交
问题:撤销最近的提交保留更改。
解决:
git reset --soft HEAD~1
六、高级 Git 技巧
6.1 使用 Git Stash 暂存变更
需要临时切换分支时,可以将未完成的更改暂存起来,稍后恢复:
git stash # 暂存更改
git stash pop # 恢复最近的暂存
6.2 Git Rebase 变基
将分支合并历史整理为线性结构,使提交记录更清晰:
git rebase <branch-name>
6.3 创建标签
标签用于标记特定版本的提交(如发布版本):
git tag <tag-name>
git push origin <tag-name>
七、结语
掌握 Git 的基本操作和高级技巧能帮助开发者更高效地管理代码。无论是团队协作还是个人项目,Git 都是现代开发流程中的重要工具。希望这篇文章能让你在使用 Git 时更加得心应手。
相关文章:
Git 使用指南:从基础到实战
Git 是目前最流行的分布式版本控制系统,广泛应用于软件开发、项目协作和版本管理。本文详细介绍 Git 的基础操作、工作流程、分支管理、常见问题解决方法以及进阶技巧,帮助开发者在日常工作中高效地使用 Git。 目录 一、Git 基础概念1.1 版本控制1.2 Git…...

新生代对象垃圾回收如何避免全堆扫描
新生代垃圾回收如何避免全堆扫描:通过卡表 写屏障避免全堆扫描 卡表: 在做YGC的时候,需要判断年轻代里面的对象哪些是垃圾,这些对象可能被老年代的对象引用, 这时候判断年轻代的某个对象是不是垃圾的时候࿰…...

[论文阅读] | 智能体长期记忆
更新记录: 2024.11.2 人大高瓴长期记忆综述 文章目录 人大高瓴长期记忆综述智能体与环境交互记忆的来源/形式/操作来源:(1)当前任务历史信息 (2)其他任务的信息 (3)外部知识形式:如何表达记忆的内容,通过(1)文本 (2)参数(训练到模…...

Vue2.0 通过vue-pdf-signature@4.2.7和pdfjs-dist@2.5.207实现PDF预览
1.安装依赖 npm install pdfjs-dist2.5.207 --savenpm install vue-pdf-signature4.2.7 --save2.在.vue文件中 script 部分引入 <script> import * as PDFJS from pdfjs-dist PDFJS.GlobalWorkerOptions.workerSrc require(pdfjs-dist/build/pdf.worker.js);//解决pdf…...

gradle的安装及其配置
1、下载网址 Gradle | Releases 2、 3、配置环境变量 4、 5、cmd输入gradle-v查看版本...

qt QImage详解
1、概述 QImage是Qt框架中用于处理图像数据的一个核心类。与QPixmap不同,QImage是在内存中直接存储图像像素数据的,这使得它适用于需要直接访问和修改像素的应用场景,比如图像处理算法、图像绘制以及图像分析等。QImage支持多种图像格式&…...

数据分析与效果评估的有效方法与实践探讨
内容概要 在现代社会中,数据分析与效果评估已成为各类项目管理和决策制定中的重要组成部分。首先,数据分析为我们提供了一种系统化的方法,以深入了解所收集数据的内涵与趋势。通过对数据进行整理、分类和分析,我们能够发现潜在的…...
Langchain调用模型使用FAISS
1.导包 from langchain_community.document_loaders import TextLoader from langchain_community.vectorstores import FAISS from langchain_openai.embeddings import OpenAIEmbeddings from langchain_text_splitters import RecursiveCharacterTextSplitter2.加载数据 l…...

双向链表的实现
一.概念与结构 双向链表区别于单链表不同的地方在于,双链表多出于一个指针能指向前面结点,使得整个链表得以首位相连。带头链表里的头结点称为哨兵位,哨兵位结点不储存任何有效元素,只是放哨功能。 二.实现双链表 2.1双链表结构…...

Charles简单压力测试
1.接口请求次数,并发量,请求延迟时间均可配置 1.1选中需要进行测试的接口,鼠标右键选中【repeat advance】 2.设置并发参数 下面的图中,选择了1个接口,每次迭代中1个接口同时请求,迭代1000次(…...
MMSegmentation测试阶段推理速度非常慢的一种可能原因
问题背景 测试集约1000张图片。训练阶段在测试集上推理时,速度正常,推理速度约为30fps;而使用tools/test.py进行推理时,速度非常慢,推理速度不到0.1fps。 解决方案 检查配置文件中是否启用了visualizer,…...

数据结构之链式结构二叉树的实现(初级版)
本文内容将主会多次用到函数递归知识!!! 本节内容需要借助画图才能更好理解!!! 和往常一样,还是创建三个文件 这是tree.h #pragma once #include<stdio.h> #include<stdlib.h> …...

day01-MybatisPlus
目录 1.快速入门 1.2.快速开始 1.2.1引入依赖 1.2.2.定义Mapper 1.2.3.测试 1.3.常见注解 1.3.1.TableName 1.3.2.TableId 1.3.3.TableField 1.4.常见配置 2.核心功能 2.1.条件构造器 2.1.1.QueryWrapper 2.1.2.UpdateWrapper 2.1.3.LambdaQueryWrapper 2.2.自…...

Postgresql源码(137)执行器参数传递与使用
参考 《Postgresql源码(127)投影ExecProject的表达式执行分析》 0 总结速查 prepare p_04(int,int) as select b from tbl_01 where a $1 and b $2为例。 custom计划中,在表达式计算中使用参数的值,因为custom计划会带参数值&…...

韩国恋爱游戏:阿西, 美女室友竟然…?百度网盘下载
故事情节/出场人物 [阿西, 美女室友竟然…?]是一款 FMV 真人视频恋爱游戏,你将以第一人称与5位美女室友一起体验别样合租生活。 在本作中,您将扮演合租公寓的房东男主 吴宥万(直译:牛奶男),一直独来独往的你,生活…...
一个运维牛人对运维规则的10个总结
一个运维牛人对运维规则的10个总结 在运维领域,经验和流程往往决定了系统的稳定性与可靠性。一个运维人,总结出了以下10条运维规则,涵盖了从基础管理到高级策略的全面内容,旨在帮助运维人员更好地应对各种挑战,确保系…...

Istio基本概念及部署
一、Istio架构及组件 Istio服务网格在逻辑上分为数据平面和控制平面。 控制平面:使用全新的部署模式:Istiod,这个组件负责处理Sidecar注入,证书颁发,配置管理等功能,替代原有组件,降低复杂度&…...

基于 Python 的 Django 框架开发的电影推荐系统
项目简介:本项目是基于 Python 的 Django 框架开发的电影推荐系统,主要功能包括: 电影信息爬取:获取并更新电影数据。数据展示:提供电影数据的列表展示。推荐系统:基于协同过滤算法实现个性化推荐。用户系…...
离线数仓开发SQL编写和调试的最佳实践(如何又快又好完成任务,学会几条就不用当很辛苦的牛马)
目录 在开发阶段对数据进行抽样 理论基础 实践应用 使用Hive进行数据采样 使用Spark进行数据采样 采用CTE模块化设计 逐步验证 逐步验证案例实践: 验证sales_data CTE: 验证ranked_sales CTE: 验证top_sales CTE: 结论 用Doris或Impala等更快查询的代替Hive …...
PostgreSQL 增量备份:保护你的数据资产
全文目录: 开篇语📜 前言📚 增量备份概述🔑 增量备份的优势 🛠️ PostgreSQL 增量备份实施步骤🌟 环境准备🚀 第一步:全量备份⏳ 第二步:定期增量备份🔄 第三…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...