首页 > 其他分享 >利用GIT实现高效版本控制

利用GIT实现高效版本控制

时间:2024-03-15 17:32:32浏览次数:16  
标签:文件 高效 git 版本控制 暂存区 -- GIT 提交 目录

利用GIT实现高效版本控制

进入这篇文章,相信都是对git有一些了解的,作为一个强大的版本控制工具,我们只闻其名当然是不够的!看完这篇文章,你就能学会如何利用git对你的项目进行高效的版本管理!接下来跟着我的脚步,沉浸式体验git的使用。

首先要在操作目录下打开git

1.创建仓库和初始化

  • git init:初始化一个新的 Git 仓库。在这里插入图片描述

创建了本地仓库,git才能对我们的项目进行管理

2.添加和提交更改

  • **git add[filename]**:将更改添加到暂存区。

  • **git add .**:将当前目录中的所有更改添加到临时区域。在这里插入图片描述

  • **git status**:查看工作目录和暂存区的状态。在这里插入图片描述

  • **git commit -m "[commit message]"**:使用描述性消息提交阶段性更改。

在这里插入图片描述

这个时候再查看工作目录和暂存区的状态就是这个样子:

在这里插入图片描述

显示工作区被清空。

3.分支管理

很多时候我们在修改项目内容的时候,若是直接修改了一点就提交,到后面发现这些修改又没有必要了的话,我们就要对版本进行回退操作(这个稍后再讲),非常麻烦,为了应对这种情况,分支管理操作显得非常重要!

  • **git branch**:列出仓库中的所有分支。

在这里插入图片描述

  • **git branch [branch name]**:使用指定的名称创建一个新的分支。

  • **git checkout [branch name]**:切换到指定的分支。

  • **git checkout -b [branch name]**:创建并切换到新的分支。请添加图片描述

    可以发现切换不同分支的时候,最后面的括号的内容在变化。

    再使用**git branch**语句,就能看到所有的分支了。请添加图片描述

  • **git merge [branch name]**:将指定的分支合并到当前分支中。请添加图片描述

4.查看提交历史

此处省略为了演示用的多次提交

  • **git log**:查看提交历史。
    请添加图片描述

  • **git reflog**:显示commit的历史提交记录

请添加图片描述

当提交次数过多了或者清屏了的时候,使用git log可能不能看到所有的提交历史,这个时候使用git reflog,我们就能看到所有的提交历史。

  • **git diff**:显示工作目录和暂存区之间的差异。

    我现在先在文档里面添加了一行“stage08”,这个时候调用git diff,就可以看到这样的画面:请添加图片描述

  • **git diff [commit1] [commit2]**:显示两次提交之间的差异。请添加图片描述

    这里我在后面加上两次提交的哈希值,我就能看到两次提交中的不同之处。

  • **git checkout -- <filename>**:丢弃工作目录中对指定文件的更改,将文件恢复到最近一次提交时的状态。

上面提到我在工作目录中添加了一行“stage08”,假如这个时候我不需要我目前所做的更改,我就可以调用这个语句,让工作目录回到上一次提交的状态。

  • **git giff --staged**:查看暂存区和最后一次提交之间的差异。使用这个命令可以查看已暂存的更改和最后一次提交之间的差异。
    请添加图片描述

  • **git reset --hard<commit_hash>**:这个命令会将HEAD指针指向指定的提交,并将工作目录和暂存区回滚到该提交的状态。其中,<commit_hash>是目标提交的哈希值(或者可以是分支名、标签名等可以直接解析到哈希值的引用)。

    上面的git checkout – 命令,会丢掉工作目录所做的更改,直接回到上一次的提交状态,但是很多时候我们并不想这样做,毕竟丢掉了就没了…这个时候我们就可以先将我们的更改提交,然后使用命令git reset --hard<commit_hash>,我们便可以直接跳到相应提交的状态。

    请添加图片描述

这里我们跳到了stage05,在需要时我们用相同的操作便可以回到之前的版本,或者说任意的版本,而且工作的内容也不会丢失。

5.撤销更改

  • **git reset --hard**:重置工作目录和暂存区到指定提交的状态,同时丢弃之前的所有修改。

    git checkout -- [file]git reset --hard 都是用于撤销对文件的更改,但它们的行为略有不同:

    1. git checkout – [file]:
      git checkout – [file]:
      • 这个命令用于丢弃工作目录中对指定文件的更改,将文件恢复到最近一次提交时的状态。
      • 它只影响工作目录中的文件,不会影响暂存区或提交历史。
      • 如果文件在暂存区中有修改,那么这个命令会用暂存区的文件覆盖工作目录中的文件。
      • 如果文件在暂存区中没有修改,那么这个命令会用最近一次提交中的文件覆盖工作目录中的文件。
    2. git reset --hard:
      git reset --hard:
      • 这个命令会重置工作目录和暂存区到指定提交的状态,同时丢弃之前的所有修改。
      • 它不仅影响工作目录中的文件,还会影响暂存区的内容,将暂存区也回滚到指定提交的状态。
      • 这个命令相当于对工作目录和暂存区都执行了 git checkout -- . 命令,同时还重置了HEAD指针。

    总的来说,git checkout -- [file] 是用于撤销对指定文件的修改,而 git reset --hard 是用于撤销对整个工作目录和暂存区的修改,将它们都回滚到指定提交的状态。使用时要谨慎,尤其是 git reset --hard,因为它会永久丢弃未提交的修改。

  • **git reset HEAD <filename>**:将暂存区中指定文件的修改撤销(即将文件从暂存区中移出),同时保留工作目录中对该文件的修改。

    这个命令会将文件从暂存区中移出,相当于撤销了使用git add将文件添加到暂存区的操作,但不会影响工作目录中的文件内容。使用这个命令后,文件的修改会被重新放回到工作目录中的未暂存状态,你可以继续修改这个文件,然后再次将其添加到暂存区或者直接提交。

  • **git resrt --hard HEAD^**:回到上一个版本。请添加图片描述

命令将重置当前分支的HEAD指针和工作目录到上一个提交(即当前提交的父提交)。这个命令中的HEAD^表示当前提交的父提交,^符号表示父提交,HEAD表示当前的提交。这个操作会永久性地删除上一个提交中的所有修改,慎用。

结语

Git 是一个强大而灵活的工具,可以帮助开发者有效地管理和控制项目的版本。学习这篇文章,基本上能满足个人的大部分需求了!

通过学习和掌握 Git 的基本概念和常用操作,您将能够更高效地进行团队协作,提高项目的质量和可维护性。

希望本文能够为您提供一个良好的入门指南,帮助您更好地利用 Git 进行版本控制。祝愿您在开发旅程中取得成功!


这篇博客覆盖了 Git 的常用操作以及最佳实践,希望对您有所帮助!

标签:文件,高效,git,版本控制,暂存区,--,GIT,提交,目录
From: https://blog.csdn.net/2303_80137294/article/details/136744178

相关文章

  • 模仿昆虫大脑:高效机器人技术的飞跃
    原文链接:https://www.unite.ai/mimicking-insect-brains-a-leap-forward-in-efficient-robotics/ Inthevastexpanseofnature,someofthemostprofoundinspirationscomefromthesmallestofcreatures.Insects,oftenoverlookedduetotheirdiminutivesize,a......
  • Git进阶命令-revert
    有关Git,之前有写过两篇文章:Git五个常见问题及解决方法Git进阶命令-reset一、revert命令使用场景有一天项目经理跟你说,你开发上线的代码有问题,需要马上撤回。撤回?你第一反应那不就是reset一下嘛。正当你满心欢喜,想找到需要reset的commitId时,你惊喜的发现,master分支......
  • Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台(持续集成部署Hexo博客Demo)
    目录涉及内容:一、CICD服务器环境搭建1、docker环境安装(1)、拉取镜像,启动并设置开机自启(2)、配置docker加速器2、安装并配置GitLab(1)、创建共享卷目录(2)、创建gitlab容器(3)、关闭容器修改配置文件(4)、修改完配置文件之后。直接启动容器(5)、相关的git命令(针对已存在的文件夹)3、安装配......
  • 稳定可靠:PW2163降压芯片,实现5V至3.3V/3V高效转换,3A电流稳定输出
    在现代电子设备中,电源管理芯片发挥着至关重要的作用。PW2163作为一款高效稳定的500kHz同步降压DC-DC转换器,凭借其出色的性能和广泛的应用领域,已成为众多电子设备中的电源管理新选择。 一、PW2163的显著特点与优势PW2163具有内部集成低RDS(ON)的主开关和同步开关,这一设计有助于最......
  • 4款支持本地化部署的国产办公软件,打造安全高效的内部办公环境
    在数字化快速发展的今天,办公软件已经成为企业日常运营中不可或缺的一部分。为了保障数据安全和提升办公效率,越来越多的企业开始选择支持本地化部署的国产办公软件。今天给大家分享4款支持本地化部署的国产办公软件,它们能够为企业打造安全高效的内部办公环境。 永中文档 永中......
  • 轻盈高效:深入了解.NET中的ValueStopwatch计时器
     概述:ValueStopwatch是.NET中轻量级计时器,用于高性能时间测量。作为值类型,避免了装箱拆箱开销,内存占用小。通过简单的使用方法,轻松实现代码块执行时间测量,且相比Stopwatch更为高效。在.NET中,ValueStopwatch是一个轻量级的计时器类,用于测量代码块的执行时间。相较于System.Dia......
  • Git提交规范
    意义及现状在开发过程中,Git每次提交代码,都需要写Commitmessage(提交说明),规范的Commitmessage有很多好处:方便快速浏览查找,回溯之前的工作内容可以直接从commit生成Changelog(发布时用于说明版本差异)目前我们并没有对commitmessage进行规范,造成以下麻烦:每个人风格不同,......
  • 【论文阅读】Vision Mamba:双向状态空间模型的的高效视觉表示学习
    文章目录VisionMamba:双向状态空间模型的的高效视觉表示学习摘要介绍相关工作用于视觉应用的状态空间模型方法准备视觉MambaVim块结构细节高效分析计算效率实验图片分类语义分割目标检测和实例分割消融实验双向SSM分类设计总结和未来工作论文地址:VisionMam......
  • 小米便签AS部署之Git的基本使用
    1项目测试截图及仓库地址https://gitee.com/magicfatblink/Notes-master2小米便签代码的移植2.1IDE的准备2.1.1AS版本选择由于小米便签是一个很老的项目,距最后一次提交已经有13年的历史了当时Android主流开发软件还是eclipse,本项目原始代码也是基于eclipse运行的,所......
  • 关于Git小白应该知道的事
    听说学会使用Git版本控制,对写程序很有帮助,今天花了一点时间学习体验了一下起初我的配置了虚拟机,安装Linux之CentOS,使用vscode连接使用,对用惯了Windows来说,非常友好了写代码,管理文件,包括调试都很方便,在网上看过视频讲解后,也安装上了GIT,还建了一个测试仓库(Repository)也把代码搞......