【Git|项目管理】Git的常用命令以及使用场景

news2024/11/18 6:42:19

文章目录

  • 1.前言
  • 2.工作区,暂存区,版本库简介
  • 3.Git的常用命令
  • 4.版本回退
  • 5.撤销修改
  • 6.删除文件
  • 7.总结

在这里插入图片描述

1.前言

在学习Git命令之前,需要先了解工作区,暂存区和版本库这三个概念

2.工作区,暂存区,版本库简介

在使用Git进行版本控制时,有三个重要的概念:工作区、暂存区和版本库

  1. 工作区(Working Directory):工作区是指项目所在的目录,是进行代码编写和修改的地方。在工作区中,可以添加、修改或删除文件。
  2. 暂存区(Staging Area):暂存区是Git中的一个中间区域,用于临时存放我们修改过的文件。在我们对工作区中的文件进行修改后,需要将修改的文件添加到暂存区,以便在提交时将暂存区的内容添加到版本库中。
  3. 版本库(Repository):版本库是Git中的核心部分,它保存了项目的所有历史记录和文件状态。版本库分为本地版本库和远程版本库两部分。本地版本库保存在本地计算机上,包括暂存区和分支等信息;远程版本库保存在远程服务器上,用于多人协作开发和代码的备份。

在Git的工作流程中,我们对工作区的文件进行修改后,将修改的文件添加到暂存区,再将暂存区的内容提交到版本库中,形成一个新的版本。这样可以方便地管理代码的修改历史和进行代码的版本控制。

Git的工作流程通常如下:

  1. 在工作区修改(添加、修改、删除)文件。
  2. 将修改的文件添加到暂存区,使用git add命令。
  3. 将暂存区的文件提交到版本库,使用git commit命令。
  4. 将本地提交推送到远程仓库,使用git push命令

在使用git add提交修改的文件到暂存区时有两种方式:

# 添加指定文件(可以一次添加多个)到git中 
git add [文件1] [文件2]...
# 添加当前所有文件到git中
git add .

而在git commit命令时,可以描述当前文件的修改信息

git commit -m "文件描述信息"

3.Git的常用命令

除了上述两个命令,还有一个git log命令,它可以查看每次文件的提交信息

git log --pretty=oneline

Git 追踪管理的其实是修改操作,而不是文件

git status

这个命令用于查看Git仓库当前状态,他会列出从上次提交后暂存区中修改的文件

git diff [文件]

这个命令用于查看暂存区和工作区之间的文件差异

4.版本回退

对于文件,我们可能会修改很多次.如果对当前修改的效果不满意,就可以使用版本回退,回退到以前的版本,回到之前的版本后,还可以回到最新版本

命令如下:

git reset [--soft / --mixed / --hard] [HEAD]

版本回退本质上回退的是版本库的内容

如果想要工作区和暂存区的内容也会退,执行git reset可以选择不同的选项

选项工作区暂存区版本库
–soft不回退不回退回退
–mixed(默认选项)不回退回退回退
–hard回退回退回退

注: --hard选项要慎用!

这个 HEAD 就是想要回退的版本

可以使用git log --pretty=oneline命令进行查看

在这里插入图片描述
我这里提交了两次,就会显示两次的提交信息

前面一串数字+英文的组合 是版本,而后面的add1和add2是文件的描述信息

如果回退后想要回到会退前的版本,也可以使用此命令回到最新的版本.因为打印过版本信息, 把 HEAD 改成最新的即可

5.撤销修改

撤销修改操作分为三种情况: 1. 只撤销工作区文件修改的操作 2. 撤销工作区和暂存区文件修改的操作 3. 撤销在工作区,暂存区和版本库都修改的操作

如果只撤销工作区文件修改的操作

  1. 手动进行撤销,不推荐,容易出错
  2. 使用 git checkout 命令,如下:
git checkout -- [文件]

如果撤销工作区和暂存区文件修改的操作,可以使用版本回退命令

git reset --hard [HEAD]

--hard 选项可以回退工作区,暂存区和版本库的内容

如果使用--mixed选项也是可以的,这个选项可以回退暂存区和版本库的内容.此时就只剩下工作区的内容需要撤销修改了. 就是上述如果只撤销工作区文件修改的操作的场景.

如果撤销在工作区,暂存区和版本库都修改的操作

  • 注意这里有个前提条件,是在commit操作之后,没有进行push操作将文件上推送到远程仓库

撤销的主要目的,也是为了不影响远程仓库中的代码

有了上述的前提条件后,可以使用版本回退进行撤销修改

git reset --hard [HEAD]
# HEAD 代表当前版本
# HEAD^ 表示上一个版本

6.删除文件

这里的删除文件指的是删除版本库中的文件

大致可以分为三步:

  1. 首先使用rm命令把工作区中的文件进行删除
  2. 使用git add命令将刚才删除的文件提交到暂存库
  3. 使用git commit命令提交到版本库即可

可以使用git rm命令简化操作,直接将文件从暂存区中删除,后续直接进行git commit命令即可

7.总结

以上就是一些Git的常用命令和使用场景, 要根据当前的场景和需求使用合适的命令进行执行

在这里插入图片描述

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

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

相关文章

机器学习——异常检测

异常点检测(Outlier detection),⼜称为离群点检测,是找出与预期对象的⾏为差异较⼤的对象的⼀个检测过程。这些被检测出的对象被称为异常点或者离群点。异常点(outlier)是⼀个数据对象,它明显不同于其他的数据对象。异…

invalid use of incomplete type class ui(new Ui::MainWindow)报错,解决方案

invalid use of incomplete type class ui(new Ui::MainWindow报错,解决方案 原因解决方案 原因 就是在我改控件button的名字的时候,没有选中控件,导致吧mainwindow的名字改了。。。 解决方案 吧mainwindow的名字改回来 MainWindow 完美解…

【LeetCode】101.对称二叉树

题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false提示: 树中节点数…

java项目之社区疫情防控管理信息系统(ssm+mysql+jsp)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的社区疫情防控管理信息系统。技术交流和部署相关看文章末尾! 开发环境: 后端: 开发语言:Ja…

小米新专利曝光:解决升降摄像头痛点,隐藏式摄像头指日可待

根据国家知识产权局官方网站的最新消息,小米移动软件公司的“摄像头隐藏式电子设备及隐藏式摄像头”的专利申请在今天获得了授权。 这款电子设备的主要组成部分包括壳体、摄像模组和可伸缩的反射组件。壳体上设有一个开口,可以让反射组件向外伸出。反射组…

数据可视化大屏拼接屏开发实录:屏幕分辨率测试工具

一、可视化大屏开发 在数据可视化大屏开发时,确定数据可视化大屏拼接屏的板块尺寸需要考虑以下几个因素: 屏幕分辨率:首先需要知道每个板块屏幕的分辨率,包括宽度和高度,这决定了每个板块上可以显示的像素数量。 数据…

Qt : day4

1.思维导图 2.服务器 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间server new QTcpServer(this);}Widget::~Widget() {delete ui;…

Pytorch(一)

目录 一、基本操作 二、自动求导机制 三、线性回归DEMO 3.1模型的读取与保存 3.2利用GPU训练时 四、常见的Tensor形式 五、Hub模块 一、基本操作 操作代码如下: import torch import numpy as np#创建一个矩阵 x1 torch.empty(5,3)# 随机值 x2 torch.rand(5,3)# 初始化…

grid网格布局看这一篇就够了(接近3w字的总结)

在当今现代Web设计中,如何实现有效的布局一直是一个关键问题。这就是为什么CSS3推出了“grid网格布局”作为一种新的布局方式。使用grid,您可以轻松地设置复杂的网格布局,而无需使用冗长的CSS代码或框架。本文将探讨grid的概念、语法和实际应…

青大数据结构【2021】

一、单选(17!) 根据中序遍历得到降序序列可以知道,每个结点的左子树的结点的值比该结点的值小,因为没有重复的关键字,所以拥有最大值的结点没有左子树。 二、简答 三、分析计算 四、算法分析 3.迪杰斯特拉…

DAY53:动态规划(十八)最长公共子序列+不相交的线+最大子序列和

文章目录 1143.最长公共子序列(注意递推的逻辑)思路DP数组含义递推公式初始化完整版重要:该解法是否保持了元素顺序总结 1035.不相交的线(注意思路)思路完整版 53.最大子序列和思路1:贪心思路1完整版思路2:动态规划DP数…

java商城系统和php商城系统对比

java商城系统和php商城系统是两种常见的电子商务平台,它们都具有一定的优势和劣势。那么,java商城系统和php商城系统又有哪些差异呢? 一、开发难度 Java商城系统和PHP商城系统在开发难度方面存在一定的差异。Java商城系统需要使用Java语言进…

【前端工程化】未使用docker时,前端项目实现线上秒级回滚

目录 一. 前言 二. 思路 三. 实践 3.1 准备单页应用项目 3.2 保存历史构建index.html内容 3.3 模拟服务端托管前端应用 3.4 快速回滚node服务端代码开发 3.5 快速回滚前端可视化页面开发 3.6 快速回滚测试 四. 总结 一. 前言 项目快速回滚是前端工程化中很重要的一环&…

【项目】轻量级HTTP服务器

文章目录 一、项目介绍二、前置知识2.1 URI、URL、URN2.2 CGI2.2.1 CGI的概念2.2.2 CGI模式的实现2.2.3 CGI的意义 三、项目设计3.1 日志的编写3.2 套接字编写3.3 HTTP服务器实现3.4 HTTP请求与响应结构3.5 EndPoint类的实现3.5.1 EndPoint的基本逻辑3.5.2 读取请求3.5.3 构建响…

yolov5 onnx模型 转为 rknn模型

1、转换为rknn模型环境搭建 onnx模型需要转换为rknn模型才能在rv1126开发板上运行,所以需要先搭建转换环境 模型转换工具 模型转换相关文件下载: 网盘下载链接:百度网盘 请输入提取码 提取码:teuc 将其移动到虚拟机中&#xf…

用于提取数据的三个开源NLP工具

开发人员和数据科学家使用生成式AI和大语言模型(LLM)来查询大量文档和非结构化数据。开源LLM包括Dolly 2.0、EleutherAI Pythia、Meta AI LLaMa和StabilityLM等,它们都是尝试人工智能的起点,可以接受自然语言提示,生成…

3d动画用云渲染靠谱吗?有什么不同?

3d动画是一种利用计算机技术制作的动画形式,它可以模拟真实世界的物体和场景,创造出各种惊人的效果和视觉体验。3d动画广泛应用于影视、游戏、广告、教育等领域,成为当今最流行的艺术表现形式之一。据统计,2019年全球3d动画市场规…

[STL]list使用介绍

[STL]list使用 注:本文测试环境是visual studio2019。 文章目录 [STL]list使用1. list介绍2. 构造函数3. 迭代器相关函数begin函数和end函数rbegin函数和rend函数 4. 容量相关函数empty函数size函数 5. 数据修改函数push_back函数和pop_back函数push_front函数和pop…

软件兼容性测试的重要性以及一些常用的测试方法

随着软件应用的不断发展,不同操作系统、浏览器、设备和平台的广泛应用,软件兼容性变得越来越重要。在开发和发布软件之前进行兼容性测试是确保软件在多个环境下正常运行的关键步骤。本文将介绍软件兼容性测试的重要性以及一些常用的测试方法。 首先&…

JMeter常用内置对象:vars、ctx、prev

在前文 Beanshell Sampler 与 Beanshell 断言 中,初步阐述了JMeter beanshell的使用,接下来归集整理了JMeter beanshell 中常用的内置对象及其使用。 注:示例使用JMeter版本为5.1 1. vars 如 API 文档 所言,这是定义变量的类&a…