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

Git 版本控制:基础介绍与常用操作

目录

Git 的基本概念

Git 安装与配置

Git 常用命令与操作

1. 初始化本地仓库

2. 版本控制工作流程

3. 分支管理

4. 解决冲突

5. 回退和撤销

6. 查看提交日志


前言

在软件开发过程中,开发者常常需要在现有程序的基础上进行修改和扩展。但如果不加以管理,很容易出现以下两种问题:

  1. 担心修改错误:怕修改了代码后,原始文件也被弄坏。
  2. 版本混乱:每次修改后,我们都需要保存一个副本,但随着修改的增多,版本数量也随之增加,如何管理这些版本成了难题。

为了解决这些问题,版本控制工具应运而生。Git 是其中最流行的一个,它能帮助我们高效地管理代码版本,确保项目开发过程中的每一步都可追溯、可恢复。

Git 的基本概念

Git 是一个分布式版本控制系统,用于跟踪文件的变化,尤其是在多人协作开发时显得尤为重要。它提供了一个清晰的工作流程,能够让每个人都保持同步并避免冲突。

1. Git 的工作区和仓库

Git 的工作区域包含以下几个部分:

  • 工作区 (Working Directory):即你本地的代码文件夹,开发者在这里进行编码。
  • 暂存区 (Staging Area):你已经修改并准备提交的文件。通过 git add 命令可以把文件加入暂存区。
  • 本地仓库 (Local Repository):本地保存的版本库,提交的内容存储在这里。
  • 远程仓库 (Remote Repository):如 GitHub、GitLab 等托管代码的服务器,团队成员可以从中拉取(pull)或推送(push)代码。

Git 安装与配置

  1. 下载 Git
    前往 Git 官网下载安装包,根据操作系统选择对应版本。 Git 官网https://git-scm.com/downloadshttps://git-scm.com/downloadshttps://git-scm.com/downloadshttps://git-scm.com/downloads

  2. 安装 Git
    安装过程有较多的配置项,安装界面如何勾选请参考我的这篇博客,如下:

Git的安装步骤详解(复杂的安装界面该如何勾选?)-CSDN博客文章浏览阅读79次。用户可以指定创建新仓库时使用的初始分支名称,例如。 https://blog.csdn.net/Future_yzx/article/details/145404243?sharetype=blogdetail&sharerId=145404243&sharerefer=PC&sharesource=Future_yzx&spm=1011.2480.3001.8118

  1. 配置 Git 用户信息
    安装后,需要配置 Git 的全局用户名和邮箱,确保每次提交记录时能够标记出具体的用户。

    git config --global user.name "Your Name"
    git config --global user.email "email@example.com"
    
  2. 配置 SSH 密钥
    为了方便与远程仓库(如 GitHub、GitLab 等)进行交互,我们需要配置 SSH 密钥。

    ssh-keygen -t rsa
    # 按提示生成 SSH 密钥
    cat ~/.ssh/id_rsa.pub
    # 将生成的公钥复制到远程仓库的 SSH 密钥配置中
    

Git 常用命令与操作

1. 初始化本地仓库

git init  # 初始化一个空的 Git 仓库

2. 版本控制工作流程

  • 将文件添加到暂存区:

    git add .  # 添加当前目录下所有文件
    git add fileName  # 添加某个指定文件
    
  • 提交修改到本地仓库:

    git commit -m "提交备注"
    
  • 查看状态:

    git status  # 查看当前仓库的状态
    
  • 推送本地修改到远程仓库:

    git push  # 推送到远程仓库
    
  • 拉取远程仓库的修改:

    git pull  # 拉取远程仓库最新的修改
    

3. 分支管理

Git 允许我们在不同的分支上进行开发,分支操作使得多个开发者可以并行工作,而不会互相影响。

  • 查看本地分支:

    git branch  # 查看所有本地分支
    
  • 创建并切换到新分支:

    git checkout -b new-branch  # 创建并切换到新分支
    
  • 切换到已存在的分支:

    git checkout existing-branch  # 切换到指定的分支
    
  • 合并分支:

    git checkout master  # 切换到 master 分支
    git merge new-branch  # 合并新分支到 master
    
  • 删除分支:

    git branch -d branch-name  # 删除本地分支
    git push origin --delete branch-name  # 删除远程分支
    

4. 解决冲突

出现CONFLICT => 表明该文件有冲突,被至少2人修改。

解决方法:

  • 查看日志,去线下和对应修改人员沟通,确定如何修改。
  • 切忌在协作开发时,随意修改或者删除他人代码

下面为大家演示一个冲突解决案例:

① 现在我们在新建一个分支,dev1

git checkout -b dev1

② 查看:

$ git branchdev
* dev1master

③ 我们在div1分支下,对文件里边的内容进行修改

④ 然后上传:

git add .
git commit -m"div1进行提交"
git checkout master
git merge dev1
git push

⑤ 上传成功之后,我们在切换到dev分支之下,我们可以看到 div 分支下的文件内容 已经和dev1分支下的文件中的内容不一致了,现在我们重写一个新的内容

⑥ 同样进行上传,然后当我们在合并分支的时候会出现CONFLACT冲突,如下图:

⑦ 打开我们的文件,可以看到git自动帮我们标记出了具体的冲突内容:

⑧ 产生冲突后,我们必须手动解决冲突,只需要我们保留我们想要的结果

⑨ 更改完错误以后需要我们commit提交,然后上传

造成冲突的原图:

在不同分支之下,更改了相同的文件

5. 回退和撤销

  • 撤销未提交的修改

    git checkout fileName  # 撤销某个文件的修改
    git checkout .  # 撤销所有文件的修改
    
  • 回退到上一个提交:

    git reset --hard HEAD^  # 回退到上一个版本
    

6. 查看提交日志

  • 查看提交历史

    git log  # 查看详细的提交日志
    git log --oneline  # 简洁格式查看提交历史
    
  • 查看命令历史

    git reflog  # 查看 Git 命令历史
    

总结

        Git 是一个强大的版本控制工具,它能够帮助开发者高效地管理代码版本,追踪代码修改,避免版本冲突,并且支持多人协作开发。掌握 Git 的基本操作和工作流程对于现代软件开发至关重要。如果你刚刚开始接触 Git,建议多练习命令行操作,理解每一个命令的意义,逐步建立起版本控制的思维方式。

希望本文能帮助你更好地理解 Git,并使用它进行版本管理和团队协作。

相关文章:

Git 版本控制:基础介绍与常用操作

目录 Git 的基本概念 Git 安装与配置 Git 常用命令与操作 1. 初始化本地仓库 2. 版本控制工作流程 3. 分支管理 4. 解决冲突 5. 回退和撤销 6. 查看提交日志 前言 在软件开发过程中,开发者常常需要在现有程序的基础上进行修改和扩展。但如果不加以管理&am…...

讲清逻辑回归算法,剖析其作为广义线性模型的原因

1、逻辑回归算法介绍 逻辑回归(Logistic Regression)是一种广义线性回归分析模型。虽然名字里带有“回归”两字,但其实是分类模型,常用于二分类。既然逻辑回归模型是分类模型,为什么名字里会含有“回归”二字呢?这是因为其算法原…...

数据结构(1)——算法时间复杂度与空间复杂度

目录 前言 一、算法 1.1算法是什么? 1.2算法的特性 1.有穷性 2.确定性 3.可行性 4.输入 5.输出 二、算法效率 2.1衡量算法效率 1、事后统计方法 2、事前分析估计方法 2.2算法的复杂度 2.3时间复杂度 2.3.1定义 2.3.2大O渐进表示法 2.3.3常见时间复…...

K8s运维管理平台 - xkube体验:功能较多

目录 简介Lic安装1、需要手动安装MySQL,**建库**2、启动命令3、[ERROR] GetNodeMetric Fail:the server is currently unable to handle the request (get nodes.metrics.k8s.io qfusion-1) 使用总结优点优化 补充1:layui、layuimini和beego的详细介绍1.…...

spring源码阅读系列文章目录

对于spring认识首先要了解 spring相关概念术语,然后是如下的几句话牢记并反射出来: Bean怎么来的,通过BeanDefinitionBeanDefinition有Spring框架内置的,有手动定义或者自动配置扫描出来的(写个Demo工程)B…...

快速提升网站收录:利用网站新闻发布功能

本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/63.html 利用网站新闻发布功能快速提升网站收录是一个有效的策略。以下是一些具体的建议,帮助你更好地利用这一功能: 一、保持新闻更新频率 搜索引擎尤其重视网站的…...

【14】WLC3504 HA配置实例

1.概述 本文档使用 Cisco WLC 3504 实现无线控制器的高可用性。这里所指的HA是指WLC设备box-to-box的冗余。换句话说,即1:1的设备冗余,其中一个 WLC 将处于Active活动状态,而第二个 WLC 将处于Standby-hot热待机状态,通过RP冗余端口持续监控活动 WLC 的运行状况。两个 WLC…...

什么是LPU?会打破全球算力市场格局吗?

在生成式AI向垂直领域纵深发展的关键节点,一场静默的芯片革命正在改写算力规则。Groq研发的LPU(Language Processing Unit)凭借其颠覆性架构,不仅突破了传统GPU的性能天花板,更通过与DeepSeek等国产大模型的深度协同&a…...

智慧物业管理系统实现社区管理智能化提升居民生活体验与满意度

内容概要 智慧物业管理系统,顾名思义,是一种将智能化技术融入社区管理的系统,它通过高效的手段帮助物业公司和居民更好地互动与沟通。首先,这个系统整合了在线收费、停车管理等功能,让居民能够方便快捷地完成日常支付…...

Vue3 表单:全面解析与最佳实践

Vue3 表单:全面解析与最佳实践 引言 随着前端技术的发展,Vue.js 已经成为最受欢迎的前端框架之一。Vue3 作为 Vue.js 的最新版本,带来了许多改进和新的特性。其中,表单处理是 Vue 应用中不可或缺的一部分。本文将全面解析 Vue3 …...

MySQl的日期时间加

MySQL日期相关_mysql 日期加减-CSDN博客MySQL日期相关_mysql 日期加减-CSDN博客 raise notice 查询目标 site:% model:% date:% target:%,t_shipment_date.site,t_shipment_date.model,t_shipment_date.plant_date,v_date_shipment_qty_target;...

实战:如何利用网站日志诊断并解决收录问题?

本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/50.html 利用网站日志诊断并解决收录问题是一种非常有效的方法。以下是一个实战指南,帮助你如何利用网站日志来诊断并解决网站的收录问题: 一、获取并分析网站日志 …...

每日一题——有效括号序列

有效括号序列 题目描述数据范围:复杂度要求: 示例题解代码实现代码解析1. 定义栈和栈操作2. 栈的基本操作3. 主函数 isValid4. 返回值 时间和空间复杂度分析 题目描述 给出一个仅包含字符 (, ), {, }, [, ] 的字符串,判断该字符串是否是一个…...

PyTorch数据建模

回归分析 import torch import numpy as np import pandas as pd from torch.utils.data import DataLoader,TensorDataset import time strat = time.perf_counter()...

OpenAI 实战进阶教程 - 第二节:生成与解析结构化数据:从文本到表格

目标 学习如何使用 OpenAI API 生成结构化数据(如 JSON、CSV 格式)。掌握解析数据并导出表格文件的技巧,以便适用于不同实际场景。 场景背景 假设你是一名开发人员,需要快速生成一批产品信息列表(如名称、价格、描述…...

二叉树--链式存储

1我们之前学了二叉树的顺序存储(这种顺序存储的二叉树被称为堆),我们今天来学习一下二叉树的链式存储: 我们使用链表来表示一颗二叉树: ⽤链表来表⽰⼀棵⼆叉树,即⽤链来指⽰元素的逻辑关系。通常的⽅法是…...

Windows 中的 WSL:开启你的 Linux 之旅

今天在安装windows上安装Docker Desktop的时候,遇到了WSL。下面咱们就学习下。 欢迎来到涛涛聊AI 一、什么是 WSL? WSL,全称为 Windows Subsystem for Linux,是微软为 Windows 系统开发的一个兼容层,它允许用户在 Win…...

2.3学习总结

今天做了下上次测试没做出来的题目,作业中做了一题,看了下二叉树(一脸懵B) P2240:部分背包问题 先求每堆金币的性价比(价值除以重量),将这些金币由性价比从高到低排序。 对于排好…...

前端力扣刷题 | 6:hot100之 矩阵

73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 法一: var setZeroes function(matrix) {let setX new Set(); // 用于存储需要置零的行索引let setY new Set(); //…...

docker gitlab arm64 版本安装部署

前言: 使用RK3588 部署gitlab 平台作为个人或小型团队办公代码版本使用 1. docker 安装 sudo apt install docker* 2. 获取arm版本的gitlab GitHub - zengxs/gitlab-arm64: GitLab docker image (CE & EE) for arm64 git clone https://github.com/zengxs…...

Pandas API on Spark 配置选项系统、默认索引与性能调优

1. 什么是 Pandas API on Spark 的选项系统 Pandas API on Spark 提供了一个选项系统,用来定制运行时行为。最常见的是显示类选项,比如控制最大展示行数,但它也支持影响计算行为、索引生成方式、绘图后端等。选项名采用“点式命名”&#xff…...

UnrealPakViewer工具解析:UE4资源管理的可视化解决方案

UnrealPakViewer工具解析:UE4资源管理的可视化解决方案 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer UnrealPakViewer是一款专为UE4开…...

3大核心功能构建反检测浏览器:Camoufox实战指南

3大核心功能构建反检测浏览器:Camoufox实战指南 【免费下载链接】camoufox 🦊 Anti-detect browser 项目地址: https://gitcode.com/gh_mirrors/ca/camoufox 在当今数据驱动的时代,网站反爬虫系统日益严苛,传统浏览器在访问…...

Hunyuan-MT-7B效果展示:学术论文摘要英→中翻译在专业术语一致性表现

Hunyuan-MT-7B效果展示:学术论文摘要英→中翻译在专业术语一致性表现 1. 引言:专业翻译的技术挑战 学术论文翻译一直是机器翻译领域的难点,特别是专业术语的一致性保持。传统翻译工具在处理学术文献时,经常出现术语翻译不统一、…...

银河麒麟V10 SP1下使用rsync实现多客户端定时数据备份(避坑指南)

银河麒麟V10 SP1多客户端数据同步全链路配置与优化实战 在IT运维工作中,数据备份如同氧气般不可或缺。想象一下,当数十台客户端设备同时运行时,如何确保关键业务数据能够安全、高效地集中备份?银河麒麟V10 SP1作为国产操作系统的…...

破解代码智能壁垒:DeepSeek-Coder-V2实战指南与开源优势深度解析

破解代码智能壁垒:DeepSeek-Coder-V2实战指南与开源优势深度解析 【免费下载链接】DeepSeek-Coder-V2 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-Coder-V2 面对日益复杂的软件开发需求,开发者们常常在代码生成质量、多语言支持…...

XCOM 2模组管理终极解决方案:AML启动器效率革命指南

XCOM 2模组管理终极解决方案:AML启动器效率革命指南 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/…...

5步定制UEFI启动界面:技术爱好者的HackBGRT实战指南

5步定制UEFI启动界面:技术爱好者的HackBGRT实战指南 【免费下载链接】HackBGRT Windows boot logo changer for UEFI systems 项目地址: https://gitcode.com/gh_mirrors/ha/HackBGRT 一、问题发现:启动界面定制的3大痛点 在计算机使用体验中&am…...

CLIP-GmP-ViT-L-14开源模型部署指南:HuggingFace Transformers无缝集成方案

CLIP-GmP-ViT-L-14开源模型部署指南:HuggingFace Transformers无缝集成方案 想快速验证一张图片和几段文字描述哪个最匹配吗?手动写代码调用模型、处理数据、计算相似度,是不是想想就觉得麻烦?今天给大家介绍一个开箱即用的工具&…...

打造专属功能生态:开源工具扩展系统全攻略

打造专属功能生态:开源工具扩展系统全攻略 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 开源工具扩展系统是一套基于动态链接库(DLL)的功能…...