当前位置: 首页 > news >正文

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 是目前最流行的分布式版本控制系统&#xff0c;广泛应用于软件开发、项目协作和版本管理。本文详细介绍 Git 的基础操作、工作流程、分支管理、常见问题解决方法以及进阶技巧&#xff0c;帮助开发者在日常工作中高效地使用 Git。 目录 一、Git 基础概念1.1 版本控制1.2 Git…...

新生代对象垃圾回收如何避免全堆扫描

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

[论文阅读] | 智能体长期记忆

更新记录&#xff1a; 2024.11.2 人大高瓴长期记忆综述 文章目录 人大高瓴长期记忆综述智能体与环境交互记忆的来源/形式/操作来源&#xff1a;(1)当前任务历史信息 (2)其他任务的信息 (3)外部知识形式&#xff1a;如何表达记忆的内容&#xff0c;通过(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不同&#xff0c;QImage是在内存中直接存储图像像素数据的&#xff0c;这使得它适用于需要直接访问和修改像素的应用场景&#xff0c;比如图像处理算法、图像绘制以及图像分析等。QImage支持多种图像格式&…...

数据分析与效果评估的有效方法与实践探讨

内容概要 在现代社会中&#xff0c;数据分析与效果评估已成为各类项目管理和决策制定中的重要组成部分。首先&#xff0c;数据分析为我们提供了一种系统化的方法&#xff0c;以深入了解所收集数据的内涵与趋势。通过对数据进行整理、分类和分析&#xff0c;我们能够发现潜在的…...

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…...

双向链表的实现

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

Charles简单压力测试

1.接口请求次数&#xff0c;并发量&#xff0c;请求延迟时间均可配置 1.1选中需要进行测试的接口&#xff0c;鼠标右键选中【repeat advance】 2.设置并发参数 下面的图中&#xff0c;选择了1个接口&#xff0c;每次迭代中1个接口同时请求&#xff0c;迭代1000次&#xff08;…...

MMSegmentation测试阶段推理速度非常慢的一种可能原因

问题背景 测试集约1000张图片。训练阶段在测试集上推理时&#xff0c;速度正常&#xff0c;推理速度约为30fps&#xff1b;而使用tools/test.py进行推理时&#xff0c;速度非常慢&#xff0c;推理速度不到0.1fps。 解决方案 检查配置文件中是否启用了visualizer&#xff0c;…...

数据结构之链式结构二叉树的实现(初级版)

本文内容将主会多次用到函数递归知识&#xff01;&#xff01;&#xff01; 本节内容需要借助画图才能更好理解&#xff01;&#xff01;&#xff01; 和往常一样&#xff0c;还是创建三个文件 这是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源码&#xff08;127&#xff09;投影ExecProject的表达式执行分析》 0 总结速查 prepare p_04(int,int) as select b from tbl_01 where a $1 and b $2为例。 custom计划中&#xff0c;在表达式计算中使用参数的值&#xff0c;因为custom计划会带参数值&…...

韩国恋爱游戏:阿西, 美女室友竟然…?百度网盘下载

​ 故事情节/出场人物 [阿西, 美女室友竟然…&#xff1f;]是一款 FMV 真人视频恋爱游戏&#xff0c;你将以第一人称与5位美女室友一起体验别样合租生活。 在本作中&#xff0c;您将扮演合租公寓的房东男主 吴宥万(直译:牛奶男)&#xff0c;一直独来独往的你&#xff0c;生活…...

一个运维牛人对运维规则的10个总结

一个运维牛人对运维规则的10个总结 在运维领域&#xff0c;经验和流程往往决定了系统的稳定性与可靠性。一个运维人&#xff0c;总结出了以下10条运维规则&#xff0c;涵盖了从基础管理到高级策略的全面内容&#xff0c;旨在帮助运维人员更好地应对各种挑战&#xff0c;确保系…...

Istio基本概念及部署

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

基于 Python 的 Django 框架开发的电影推荐系统

项目简介&#xff1a;本项目是基于 Python 的 Django 框架开发的电影推荐系统&#xff0c;主要功能包括&#xff1a; 电影信息爬取&#xff1a;获取并更新电影数据。数据展示&#xff1a;提供电影数据的列表展示。推荐系统&#xff1a;基于协同过滤算法实现个性化推荐。用户系…...

离线数仓开发SQL编写和调试的最佳实践(如何又快又好完成任务,学会几条就不用当很辛苦的牛马)

目录 在开发阶段对数据进行抽样 理论基础 实践应用 使用Hive进行数据采样 使用Spark进行数据采样 采用CTE模块化设计 逐步验证 逐步验证案例实践: 验证sales_data CTE: 验证ranked_sales CTE: 验证top_sales CTE: 结论 用Doris或Impala等更快查询的代替Hive …...

PostgreSQL 增量备份:保护你的数据资产

全文目录&#xff1a; 开篇语&#x1f4dc; 前言&#x1f4da; 增量备份概述&#x1f511; 增量备份的优势 &#x1f6e0;️ PostgreSQL 增量备份实施步骤&#x1f31f; 环境准备&#x1f680; 第一步&#xff1a;全量备份⏳ 第二步&#xff1a;定期增量备份&#x1f504; 第三…...

为什么你的Linux桌面还缺少一个触手可及的OCR助手?

为什么你的Linux桌面还缺少一个触手可及的OCR助手&#xff1f; 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维码。内置多国语言库…...

基于RAG的代码库智能助手:从原理到本地化部署实战

1. 项目概述&#xff1a;一个为开发者打造的“智能副驾”最近在GitHub上看到一个挺有意思的项目&#xff0c;叫maziminds/manage-buddy。光看名字&#xff0c;你可能会觉得它是个任务管理工具&#xff0c;或者是个团队协作软件。但当你真正点进去&#xff0c;仔细研究它的READM…...

终极指南:Ghost补丁管理系统与第三方依赖维护最佳实践

终极指南&#xff1a;Ghost补丁管理系统与第三方依赖维护最佳实践 【免费下载链接】Ghost Independent technology for modern publishing, memberships, subscriptions and newsletters. 项目地址: https://gitcode.com/GitHub_Trending/gh/Ghost Ghost作为一款强大的现…...

开源Claude本地部署指南:从模型选型到性能调优实战

1. 项目概述&#xff1a;当开源精神遇上AI推理最近在折腾本地部署大语言模型的朋友&#xff0c;估计都绕不开一个名字&#xff1a;Claude。作为Anthropic家的明星产品&#xff0c;Claude系列模型以其出色的推理能力、对指令的精准理解和强大的安全性&#xff0c;在开发者圈子里…...

面试题详解:检索链路设计全攻略——RAG 检索架构、查询理解、多路召回、混合检索、Rerank、上下文构造与评估闭环

1. 为什么说检索链路设计&#xff0c;是 RAG 项目的“生命线”&#xff1f;1.1 大模型回答质量&#xff0c;很多时候不是模型决定的&#xff0c;而是证据决定的在 RAG 系统里&#xff0c;大模型像一个会组织语言的“回答器”&#xff0c;但它能不能答准&#xff0c;取决于它面前…...

ThinkPad风扇控制深度指南:TPFanCtrl2架构解析与高级配置

ThinkPad风扇控制深度指南&#xff1a;TPFanCtrl2架构解析与高级配置 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 TPFanCtrl2是一款专为ThinkPad笔记本电脑设计的Wi…...

【LangChain实战】无缝切换:将项目中的OpenAI LLM替换为本地或第三方API模型

1. 为什么需要替换OpenAI LLM&#xff1f; 最近两年大语言模型&#xff08;LLM&#xff09;发展迅猛&#xff0c;但很多项目一上来就直接用OpenAI API&#xff0c;这其实存在不少隐患。我在实际项目中就遇到过几个典型问题&#xff1a;首先是API调用不稳定&#xff0c;特别是国…...

从鱼眼到广角:相机畸变公式的实战拆解与参数调优

1. 相机畸变&#xff1a;从鱼眼到广角的视觉魔法 第一次用鱼眼镜头拍照片时&#xff0c;我被画面边缘夸张的弯曲效果震撼到了——直线变成了弧线&#xff0c;方形门框变成了圆润的拱门。这种"变形魔法"其实就是相机畸变最直观的体现。作为算法工程师&#xff0c;我花…...

VMOS+小黄鸟无root抓包实战:从环境搭建到证书导入的完整避坑指南

1. 为什么需要VMOS小黄鸟组合抓包 很多安卓开发者或者安全爱好者都遇到过这样的困扰&#xff1a;想要分析某个APP的网络请求&#xff0c;却发现抓包工具显示"无网络连接"。这种情况在安卓7.0及以上版本尤为常见&#xff0c;主要是因为系统加强了SSL证书验证机制。传统…...

嵌入式硬件设计中的“隐形保镖”:电压跟随电路如何让你的系统更稳定?

嵌入式硬件设计中的“隐形保镖”&#xff1a;电压跟随电路如何让你的系统更稳定&#xff1f; 在复杂的嵌入式系统中&#xff0c;信号链的完整性往往决定了整个产品的可靠性。想象一下&#xff0c;当你精心设计的传感器数据经过长距离传输后&#xff0c;最终到达MCU时却出现了严…...