【git指南】git 本地代码版本控制

news2024/11/15 12:10:02

文章目录

  • git 本地代码版本控制
    • 1 设置全局 Git 用户名和邮箱
    • 2 初始化仓库
    • 3 提交文件
    • 4 文件修改
    • 5 版本对比
    • 6 版本回退
    • 7 版本分支
    • 8 版本合并

git 本地代码版本控制

​ 下面介绍在 vscode 中如何利用 git 对本地代码进行版本控制。可以查看官网介绍来获得更详细的内容。

1 设置全局 Git 用户名和邮箱

若是第一次使用 git 的话,请先配置全局的用户名和邮箱(将以下命令用户名邮箱替换)。

git config --global user.name "Your Name"
git config --global user.email "youremail@yourdomain.com"

配置完成后,可以通过以下命令确认这些信息:

git config --list
user.name=Your Name
user.email=youremail@yourdomain.com

2 初始化仓库

​ git 版本控制是控制 某一个文件夹 下的所有文件。

​ 利用 VScode 打开想要控制的文件所在的文件夹, 左侧有个源代码管理的插件(没有的在VScode扩展中下载即可),打开后点击初始化仓库,完成对git 仓库的初始化。

image-20240202135554344

​ 初始化仓库介绍后,源代码管理插件变成如下图所示,git 会在该文件夹下创建 .git 的隐藏文件夹,用来存储 git 版本信息。

image-20240202135804678

3 提交文件

  1. 点击+键,即可将文件追踪,暂存文件更改。

    image-20240202140245756

  2. 暂存更改文件的状态,将从U (Untracked) 代表文件是是 未跟踪 的,变成 A (Added),代表文件是 新增 的,还未提交。

    image-20240202140737004

  3. 消息栏 输入本次提交的注释,点击提交即完成文件的提交。必需要在消息栏填写内容才能提交,消息栏是用来描述你的代码变化的目的和内容的地方,方便进行浏览版本差异。

    image-20240202141735342

  4. 若未在消息栏填写内容,就点击了提交按键,将会蹦出一个COMMIT_EDITMSG文件,在文件第一行填写注释内容,保存并关闭,也可完成文件的提交。

    image-20240202142106964

VScode文件右侧字母含义:

image-20240202160104987

  • AAAdded的缩写。表示这个文件是新增的,它在本地仓库中不存在,但是已经被添加到暂存区,等待提交。
  • UUUntracked的缩写。表示这个文件是未跟踪的,它在本地仓库中不存在,也没有被添加到暂存区,需要你手动添加或忽略。
  • MMModified的缩写。表示这个文件是被修改的,它在本地仓库中存在,但是已经被修改。
  • DDDeleted的缩写。表示这个文件是被删除的,它在本地仓库中存在,但是已经被删除。
  • 1,M:表示这个文件有一个错误,后面的字母代表该文件的状态。

4 文件修改

​ 当对已上传的文件进行修改过后,修改部分代码会左侧会有颜色提示,绿色表示这里是新加的代码,红色代表此处代码被删除,蓝色代表此处代码被修改。

  1. 源代码管理栏将文件的状态改为M(Modified),表示文件是被修改的。

    image-20240202143508384

  2. 点击+号,在消息框输入版本信息,点击提交,即完成了文件的修改,该修改版本将会被 git 记录。

    image-20240202143718914

  3. 点击顶端 view history 按钮,即可看见所有上传的版本(没有可以去扩展安装Git History)。

    image-20240202142600871

  4. Git History界面可以看见所有历史版本信息,左侧有版本名称即为你添加的注释(可以相同)和上传时间,右侧有版本的hash码(不同),是版本的唯一标识符。

    image-20240202143912744

  5. 点击版本,可以看到该版本相比上一版本进行了哪些操作。可以看到test7版本,相比于test6版本,添加了test_02.txt、删除了text_03.h,修改了test.c

    image-20240202161636148

    • 点击 view,可以看到该版本的该文件的内容。

      image-20240202162520039

    • 点击 Workspace,可以看到该版本与 当前工作空间内容 的对比。

      image-20240202162459794

    • 点击 Previous ,可以看到该版本与 上一版本文件内容 的对比。

      image-20240202162440688

    • 点击 History ,可以看到该文件 所有被修改的历史版本。

      image-20240202162410265

5 版本对比

当点击右侧时间线,可以对比提交的版本与当前版本的区别。左侧为对比的版本,右侧为当前版本,红色为当前版本删除的部分绿色为当前版本添加的部分

image-20240202153824126

6 版本回退

​ 版本回退分为 硬回退(Hard reset)软回退(Soft reset) 。它们的区别在于它们对工作区、暂存区和版本库的影响不同。

模式HEAD暂存区工作区
Soft移动到指定提交不变不变
Hard移动到指定提交重置为指定提交重置为指定提交
  1. 软回退(Soft reset)

    软回退模式 只会移动HEAD指针,不会修改暂存区和工作区的内容,这意味着你可以 **撤销最近的提交并保留你的修改 **

    Git History页面中,点击要回退的版本的右侧的 Soft 按钮,进行版本回退。

    image-20240202150530041

    提示框提示 “所有受影响的文件将被合并并保存在本地工作区中” ,选择 OK ,确定回退。

    image-20240202150627652

    此时,版本回退到了你选择的版本,但是本地文件仍为回退前的版本。

    image-20240202152902698

  2. 硬回退(Hard reset)

    硬回退模式 会移动HEAD指针,并重置暂存区和工作区为指定提交的内容,这意味着你可以 **完全丢弃某个提交及其后续的所有修改 **

    Git History 页面中,点击要回退的版本的右侧的 Hard 按钮,进行版本回退。

    image-20240202154347157

    提示框提示"这对您当前的工作集是不可逆的。未提交的本地文件将被删除",选择 OK ,确定回退。

    image-20240202154426940

    此时,版本回退到你选择的版本,并且你的本地文件也回退到选择的版本。

    image-20240202154631725

    硬回退不可逆,建议确定好要回退版本再使用。

7 版本分支

  1. 点击右侧 Branch 按钮,创建分支。

    image-20240202162707543

  2. 在提升框中写分支的名字,点击 OK ,创建分支。

    image-20240202162815836

  3. 创建完成后,看见右侧绿色 test6_1 ,代表当前分组位置,main 代表主分支位置。

    image-20240202163057696

  4. 点击新创建的 test6_1 分支,在弹出的提示窗选择 OK 切换到新的分支(前提是当前文件未做修改)。

    image-20240202163555987

    也可以在 VScode 左下角进行分支转换,点击 main ,选择你要切换的分支,进行切换。

    image-20240202164353285

  5. 顶部弹出弹窗,点击要切换的分支,进行分支切换。

    image-20240202164434772

  6. 与在主分支提交相同,在其他分支也是再消息栏填写版本内容后提交。

    image-20240202164858202

  7. 分支合并:

    切换到主分支,点击 源代码管理 的右上角三个点,选择分支-合并。

    image-20240202165504011

    在顶部选择你要合并的分支。

    image-20240202165537463

    分支合并成功,文件会有冲突存在,此时需要对有冲突文件进行编辑。

    image-20240202171404521

    合并更改有三种方式:

    • 采用当前更改:保留你所在的分支的修改,忽略另一个分支的修改。
    • 采用传入的更改:保留另一个分支的修改,忽略你所在的分支的修改。
    • 保留双方更改:同时保留两个分支的修改,让你自己再次编辑文件,选择最终的修改。

8 版本合并

​ 版本合并一直都是很困难的,需要一步一步来查看版本的区别,选择合适的合并方式。

  1. 可以在 合并编辑器 中查看 当前 文件内容、传入 文件内容,以及合并后的 结果

    image-20240202172309100

  2. 往往我们需要看到最原始的版本,才能方便我们确定合并时,哪些是我们要的,哪些是不要的。在合并编辑器中,可以点击右上角的三个点,选择显示基顶部。

    image-20240202172430848

  3. 此时,我们得到了 基础 版本,与之前三个版本同框的情况,方便确定合并内容。

    image-20240202172544509

    可以选择 接受当前接受传入,或者不做更改,最后选择完成合并。

  4. 当你不想进行合并时,在顶部输入>Git: Abort Merge ,选择取消合并。

    image-20240202173140606

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1429677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

01-Java工厂模式 ( Factory Pattern )

工厂模式 Factory Pattern 摘要实现范例 工厂模式(Factory Pattern)提供了一种创建对象的最佳方式 工厂模式在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象 工厂模式属于创建型模式 摘要 1. 意图 …

统信UOS上强大的文本编辑器

原文链接:统信UOS上强大的文本编辑器 大家好!在我们的日常工作和学习中,文本编辑器是我们最常用的工具之一。今天,我非常高兴地为大家介绍统信UOS系统自带的一款功能强大的文本编辑器。无论您是编程新手还是资深开发者&#xff0c…

SQL注入:sqli-labs靶场通关(1-37关)

SQL注入系列文章: 初识SQL注入-CSDN博客 SQL注入:联合查询的三个绕过技巧-CSDN博客 SQL注入:报错注入-CSDN博客 SQL注入:盲注-CSDN博客 SQL注入:二次注入-CSDN博客 ​SQL注入:order by注入-CSDN博客 …

深度学习和大数据技术的进步在自然语言处理领域的应用

文章目录 每日一句正能量前言一、深度学习在NLP中的应用二、大数据技术在NLP中的应用三、深度学习和大数据技术的影响四、应用场景后记 每日一句正能量 努力学习,勤奋工作,让青春更加光彩。 前言 随着深度学习和大数据技术的迅猛发展,自然语…

多线程(进阶三:JUC)

目录 一、Callable接口 1、创建线程的操作 2、编写多线程代码 (1)实现Runnable接口(使用匿名内部类) (2)实现Callable接口(使用匿名内部类) 二、ReentrantLock 1、ReentrantL…

算法:阿里巴巴找黄金宝箱(II)

一、算法描述 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0-N的箱子, 每个箱子上面贴有箱子中藏有金币Q的数量。 从金币数量中选出一个数字集合, 并销毁贴有这些数字的每个箱子&…

校招春招,在线测评一般测试哪些内容?

在校园招聘这一块,很多应届毕业生会相当在乎,对于他们来说,如果在学校期间就找到工作是比较轻松的事情,不用担心毕业之后找工作困难重重,可以稳稳当当毕业。但想要迅速通过招聘也不容易,在校招春招上面&…

2024美赛C题参考论文更新+完整数据集+配套代码

2024美赛C题 (文末获取完整版) 首先,我们需要对缺失的speed_mph进行插补。缺失值处理是数据预处理的重要环节之一。可以采用均值、中位数或者根据其他相关特征进行预测的方法来填补缺失值。在这里,我们可以考虑使用其他相关的特征…

[C++]类和对象(中)

一:类的六个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类中并不是什么都没有,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为…

Multi-bit的实现方法和应用 (下)

书接上回,Multi-bit的实现方法和应用 (上),闲言少叙,ICer GO! In-place MBFF实现 相较于仅基于逻辑连接的MBFF封装,如果考虑到布局的实际情况,那么就有physical aware的in-place的M…

导出pdf 加密、加水印、加页脚

1.依赖 <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.10</version> </dependency> <dependency> …

前端开发之deepmerge的使用和示例(对象的深度合并)

前端开发之deepmerge的使用和示例 前言使用场景链接效果图vue中简单案例1、安装插件2、示例结果前言 在平时的项目中经常会涉及到对象除了第一层以及下层进行深度合并,本问讲解的是深度合并的插件deepmerge,使用此插件避免通过递归实现一些深度合并所带来的问题 使用场景 …

Django的web框架Django Rest_Framework精讲(二)

文章目录 1.自定义校验功能&#xff08;1&#xff09;validators&#xff08;2&#xff09;局部钩子&#xff1a;单字段校验&#xff08;3&#xff09;全局钩子&#xff1a;多字段校验 2.raise_exception 参数3.context参数4.反序列化校验后保存&#xff0c;新增和更新数据&…

基于SpringBoot Vue超市管理系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

爱快安装和双宽带叠加

文章目录 一、爱快安装二、爱快使用1. 配置WAN12. 配置WAN23. 配置LAN14. 配置DHCP5. DNS设置6. 多线负载7. 基础设置 三、通过交换机拨号1. 交换机设置2. 配置WAN1 一、爱快安装 &#xff08;1&#xff09;下载爱快路由ISO版本 爱快路由系统下载 &#xff08;2&#xff09;IS…

MH-ET LIVE Boards(ATTiny88)实验一---点亮板载灯

MH-ET LIVE Boards(ATTiny88&#xff09;实验一点亮板载灯 在Arduino IDE中添加开发板资源包加入开发板json添加开发板 安装开发板驱动方法一&#xff1a;github下载2.0a4.rar方法二&#xff1a;开发板的package包中自带的2.0a4.rar安装驱动确认安装成功 blink.ino程序测试![在…

Vulnhub靶机:hacksudo1

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;hacksudo1&#xff08;10.0.2.43&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/hac…

Python武器库开发-武器库篇之zip文件暴力破解(五十一)

Python武器库开发-武器库篇之zip文件暴力破解(五十一) Zip文件是一种常用的存档文件格式&#xff0c;用于将多个文件和文件夹压缩成一个单独的文件。它是一种广泛接受和支持的文件格式&#xff0c;几乎所有操作系统和计算机都能够处理Zip文件。Zip文件使用一种压缩算法来减小文…

状态流支持的状态和转换操作类型

状态操作类型 States 可以有不同的操作类型&#xff0c;包含了entry, during, exit, bind, and, on event_name 操作。状态的操作使用以下通用格式的标签表示法分配给操作类型&#xff1a; name/ entry:进入操作 during:在操作期间 exit:退出操作 bind:数据名, 事件名 on even…

使用wda框架实现IOS自动化测试详解

目录 1、weditor元素定位工具 1.1、weditor的安装和使用 2、wda iOS自动化框架 2.1、wda概述 2.2、wda安装 2.3、wda的使用 2.3.1、全局配置 2.3.2、创建客户端 2.3.3、APP相关操作 1、启动APP 2、关闭APP 3、获取APP状态信息 4、获取当前APP的运行信息 2.3.4、设…