Git基本操作1

Git 是一款分布式版本控制系统,主要用于高效管理代码版本和团队协作开发。它能精确记录每次代码修改,支持版本回溯和分支管理,让开发者可以并行工作而互不干扰。通过本地提交和远程仓库同步,Git 既保障了代码安全,又实现了多人协作开发,同时支持离线工作,是现代软件开发中不可或缺的工具。

比如下面的场景:在学校中,你的老师要求你写一个的文档。你奋笔疾书地写下了第一版并且交给了老师,但老师不满意,认为还有改进的地方,于是你在这个第一版的word文件上直接进行覆盖式的修改,得到的第二版交给了老师,老师仍然觉得不满意,于是第三版,第四版......当你把最终版交给老师之后,老师来一句“我觉得还不如你的第一版,就要第一版吧!”。这时你崩溃了,因为你修改的时候是直接在原来版本的基础上直接进行修改的,根本没有保存以前的版本,拿不出来第一版。

这种情况就会让人很难受,因为你基本没有办法恢复出第一版,所以就有了Git,来记录每次的修改及版本迭代的一个管理系统。

1、认识工作区、暂存区、版本库

比如我们在当前目录下创建一个ReadMe文件。

 当前目录下的.git就是版本库,或者说真正的仓库,ReadMe所在的位置就是工作区。

图示为:

暂存区也被称为索引,是版本库的一部分。目前情况下,Git能否管理ReadMe文件?

答案是不能的

        在建立的仓库的工作区中进行一次add,文件的修改信息(包括新增,修改,删除)就会在保存在stage的暂存区中,再对该文件进行commit操作就会将文件信息提交到master分支,也就是本地仓库,对应的还有个概念是远程仓库,远程仓库就是我们在Gitee中创建的仓库,可以克隆到本地仓库。        

        修改的工作区内容会写入对象库的一个新的git对象中。

2、添加文件

可一次提交一个文件,多个文件或所有文件。

git add ReadMe
git commit -m "描述"
git add file1 file2
git commit -m "描述"
git add .
git commit -m "描述"

一个文件:

多个文件:

查看git日志命令:

git log
git log --pretty=oneline

上面的两个都可以,第二个显示的更加简洁:

3、修改文件

git追踪管理的其实是修改,而不是文件

使用git diff查看暂存区和工作区的差异,例如:在ReadMe中添加了hello git,使用git status就能查看到当前被修改的文件:

使用git diff 文件名:

git diff 文件名

该命令用来显示暂存区和工作区文件的区别:

最下面的绿色字体就是新增的内容。这样就能看到做了什么修改,可以大致检查一下再提交,就会放心很多。

4、版本回退

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

使用git reset进行版本回退,要注意的是主要有三个地方的可能回退,工作区、暂存区、版本库;工作区的内容修改后进行add才会保存到暂存区,经过commit后才会保存到版本库。

--soft 只会回退版本库的内容;

--mixed 会回退版本库和暂存区的内容;也是git的默认选项;

--hard 会回退所有的内容,这个要慎用,因为工作区的也被回退,可能你写了很多代码,没有保存时使用了这个,那么所有的内容都会被回退,这样就会导致你所写的代码全部不在了。

HEAD选项表示回退到当前版本库的版本,也就是回退到当前版本。 

git reflog

这个命令可以查看变更历史,找到对应版本的对象ID,通过该ID可以回退到指定的版本,是 Git 本地数据恢复的关键工具。

5、撤销修改

版本库中的代码经过git push 可以推送到远程仓库;远程仓库的代码才是自己真正用的,所以要保证远程仓库的代码正确性,就有了撤销操作:目的就是不影响远程仓库的代码。

6、删除文件

删除后再add和commit,也就是现在工作区中删除,再在暂存区中删除,最后在版本库中删除。

这两个命令可以合并成一个命令,git rm [filename]

git rm [filename]

这个命令帮我们同时做了两件事,首先在工作区中删除,其次在暂存区中删除,所以我们为了方便,一般会用这个命令进行删除。

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

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

相关文章

React Native 组件间通信方式详解

React Native 组件间通信方式详解 在 React Native 开发中,组件间通信是核心概念之一。以下是几种主要的组件通信方式及其适用场景: 简单父子通信:使用 props 和回调函数兄弟组件通信:提升状态到共同父组件跨多级组件:…

TCP的可靠传输机制

TCP通过校验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性的传输。 先来看第一个可靠性传输的方法。 通过序列号和可靠性提供可靠性 TCP是面向字节的。TCP把应用层交下来的报文(可能要划分为许多较短的报文段)看成一个一个字节…

没有DBA的敏捷开发管理

前言一家人除了我都去旅游了,我这项请假,请不动啊。既然在家了,闲着也是闲着,就复盘下最近的工作,今天就复盘表结构管理吧,随系统启动的,不是flyway,而是另一个liquibase&#xff0c…

go-carbon v2.6.10发布,轻量级、语义化、对开发者友好的 golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。 carbon 目前已捐赠给 dromara 开源组织,已被 awesome-go 收录&am…

【AI News | 20250708】每日AI进展

AI Repos 1、claude-code-templates Claude Code Templates是一款全面的命令行工具,旨在为不同编程语言和框架(如JavaScript/TypeScript、Python等,Go和Rust即将推出)提供优化的Claude Code配置。它通过交互式设置、自动化钩子&a…

Nginx源码安装+静态站点部署指南(CentOS 7)

安装包:可自行前往我的飞书下载 Docs 也可以进入 nginx 官网,下载自己所需适应版本 nginx 开始安装nginx 1. 创建准备目录 cd /opt mkdir soft module # 创建软件包和源码解压目录 2. 安装依赖环境 yum -y install make zlib zlib-devel gcc-c l…

交换机的核心原理和作用

一、交换机的核心原理交换机是一种用于连接多台设备的网络硬件,其核心原理基于二层网络(数据链路层)的 MAC 地址寻址1. MAC 地址学习与存储当交换机接收到数据帧时,会读取帧中的源 MAC 地址,并将该地址与对应的端口号记…

【工具变量】上市公司企业金融强监管数据、资管新规数据(2001-2024年)

数据简介:参考顶刊《经济研究》李青原(2022)老师的做法,Post 为时间虚拟变量,根据资管新规实施的时间,当观测期为2018 年上半年及之后时,Post 取值1,否则取值0。PreFin 为资管新规实…

CSS Grid与Flexbox布局实战对比

概述 CSS布局技术在过去几年经历了重大变革,从传统的基于浮动和定位的方法,到现在强大的Flexbox和Grid布局系统。这两种现代布局方法极大地简化了复杂界面的开发过程,但它们各自适用于不同的场景。本文将对Flexbox和Grid进行深入比较&#x…

[Pytest][Part 4]多种测试运行方式

实现需求2:有两种运行测试的方式:通过config配置文件运行,测试只需要修改config配置文件cmdline 运行这里是新建一个config类来存储所有的测试配置,以后配置有修改的话也只需要修改这个类。根据目前的测试需求,config中…

平衡二叉树的删除操作

对于平衡二叉树的操作应对与考试只需要模拟出过程即可,且他的过程和插入的平衡方法一样,不一样的只是对于平衡因子的计算上。接下来我将给出方法①删除结点(方法同“二叉排序树”) ②一路向北找到最小不平衡子树,找不到…

Spark 4.0的 VariantType 类型优点以及使用分析

背景 本文基于Spark 4.0。 总结 对于半结构化的数据来说,我们一般会有两种方式进行存储: 第一种是存储为JSON String,这种可以保证Schema free,但是在使用的时候得解析为JSON,从而进行运算操作。 第二种是存储为Struct类型,这种虽…

17-C#封装,继承,多态与重载

C#封装继承多态 1. 2. 3.多态 public abstract class animal//抽象类 {public abstract void eat();//抽象方法 } public class cat : animal//继承 {public override void eat()//重写{messagebox.show("cat eat");} } public class dog: animal//继承 {public over…

恒创科技:香港站群服务器做seo站群优化效果如何

香港站群服务器做 SEO 站群优化效果如何?在当前搜索引擎优化竞争日益激烈的环境下,越来越多的企业开始关注站群策略这一高效的 SEO 手段。作为亚洲重要的网络枢纽,香港站群服务器因其独特优势,正成为实施 SEO 站群优化的热门选择。本文将客观…

Linux-进程管理

Linux-进程管理Linux 进程管理1. 进程的含义2. 进程状态3. 进程工作模式4. 守护进程5. 进程查看命令5.1 ps 命令5.2 top 命令5.3 pstree 命令6. 终止进程的 kill 命令7. 前后台运行8. 暂停进程9. 进程文件系统 /proc10. 定时任务管理10.1 at 命令10.2 batch 命令10.3 cron 与 c…

OpenCV图像增强秘籍:高通滤波与特效艺术

> 在数字图像处理领域,边缘是图像最富信息的区域。掌握高通滤波技术,你就能让图像中的隐藏细节"跃然纸上",甚至创造惊艳的艺术效果。 ## 一、图像增强与高通滤波基础 ### 1.1 图像增强的核心目标 图像增强不是简单的美化,而是通过技术手段**突出重要特征*…

347. 前K个高频元素

题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 解题思路: 要返回出现频率前k高的元素,那么我们首…

C++面试冲刺笔记1:虚函数的基本工作原理

C面试冲刺笔记1:虚函数的基本工作原理 前言 ​ 笔者最近开始投简历,出于应对之后快速的面试流程需求,这里准备的是将常见的C八股文进行总结,从而方便自己进行学习,检查和评估。 什么是虚函数 ​ 虚函数,本质…

Spring Boot 事务失效问题详解:原因、场景与解决方案

在 Spring Boot 开发中,事务管理是保证数据一致性和完整性的核心机制。然而,许多开发者在使用 Transactional 注解时,可能会遇到事务失效的问题,导致数据异常或业务逻辑错误。本文将深入分析 Spring Boot 中事务失效的常见原因&am…

Python-文件操作-StringIO和BytesIO-路径操作-shutil模块-csv,ini序列化和反序列化-argparse使用-学习笔记

序 欠4年前的一份学习笔记,献给今后的自己。 文件操作 冯诺依曼体系架构CPU由运算器和控制器组成 运算器,完成各种算数运算、逻辑运算、数据传输等数据加工处理 。 控制器,控制程序的执行 存储器,用于记忆程序和数据,例…