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

Git基本使用教程(学习记录)

参考文章链接:
Git教程(超详细,一文秒懂)

RUNOOB Git教程

Git学习记录

1Git概述

1.1版本控制软件功能

  • 版本管理:更新或回退到历史上任何版本,数据备份
  • 共享代码:团队间共享代码,合作开发

1.2svn与git

在这里插入图片描述
上图来自RUNOOB Git教程

  • svn它集中式的版本控制,不能离线工作。git分布式的版本控制,它版本放在用户自己的电脑。
  • svn不支持离线工作,版本全部都放在是中央服务器。如果中央服务器挂了。那么版本全部丢失。
  • git支持离线工作。版本都放用户自己电脑上完成。---- 分布式的版本控制。
  • svn是项目对仓库,git是仓库对仓库。

1.3Git工作机制

在这里插入图片描述上图来自RUNOOB Git教程

图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage/index),标记为 “master” 的是 master 分支所代表的目录树;HEAD是指向当前分支的一个游标(别名),输入命令时可相互替换;objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容

  1. 在工作区写代码(**工作区:**就是你在电脑里能看到的目录。)
  2. git add * 临时存储在暂存区(**暂存区:**英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)),暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中
  3. git commit -m “ xxx” 提交在本地库并描述(**版本库:**工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库),暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树
  4. git push 上传到远程仓库
    在这里插入图片描述上图来自RUNOOB Git教程

1.4Git和代码托管中心

代码托管中心是基于网络服务其的远程代码仓库,简称为远程库

  • 局域网
    • GitLab:自己搭建远程库
    • gogs:极易搭建的自助Git服务
  • 互联网
    • GitHub
    • Gitee

1.5Git安装与配置

#安装
apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \ libz-dev libssl-devapt-get install gitgit --version
# 输出:git version 1.8.1.2#配置 gitconfig
# /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config --system ,读写的就是这个文件
#~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config --global ,读写的就是这个文件
#当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量#下面--global 可以更换为 --system 或不加,意义如上
git config --global user.name "abc"
git config --global user.email abc@qq.com#查看已有配置信息
git config --list
#输出:user.name=abc user.email=abc@qq.com
# 有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如 /etc/gitconfig、~/.gitconfig),不过最终 Git 实际采用的是最后一个。

2Git常见命令

git config --global user.name xxx #设置用户名
git config --global user.email xxx #设置用户邮箱
git init #初始化本地库,生成一个 .git 目录,该目录包含了资源的所有元数据,
git init 文件夹名 #指定目录作为Git仓库,会在该目录下生成.git目录,所有Git需要的数据资源都放在该目录#如果当前目录有几个文件想要纳入版本控制,需要先用git add命令告诉Git开始对这些文件进行跟踪,然后提交:
git add *.c
git add README
git commit -m "初始化项目版本"git rm #将文件从暂存区和工作区中删除
git mv #移动或重命名工作区文件git status #查看本地库状态
git add xxx #将xxx文件加入到暂存区
git commit -m "xxx" #提交到本地库并添加日志
git reflog #查看历史记录
git reset --hard 版本号 #版本穿梭
git rm --cached 文件名 #清除暂存区文件
git checkout -- 文件名 #将暂存区中同名文件覆盖到工作区
git checkout 分支名 -- 文件名 #将本地库中同名文件覆盖到暂存区和工作区git restore #恢复或撤销文件的更改

2.1git status 查看本地库状态

  1. 首次查看,可看到分支,可看到无内容提交
  2. 增加文件后再次查看,文件显示为红色,意味着在工作区,git未追踪该文件

2.2git add 上传工作区文件至本地库

  1. git add xxx
  2. git status 会检测到暂存区有新文件

2.3git commit -m “日志信息” 文件名 提交至本地库

git commit -m 'first commit' hello.txt

2.4修改文件后,文件未被添加到暂存区,需重复上述操作

3历史版本

3.1git reflog 查看提交的版本及日志信息

3.2git log查看完整的提交版本及日志信息

git log [选项] [分支名/提交哈希]

常用的选项包括:

  • -p:显示提交的补丁(具体更改内容)
  • --oneline:以简洁的一行格式显示提交信息
  • --graph:以图形化方式显示分支和合并历史
  • --decorate:显示分支和标签指向的提交
  • --author=<作者>:只显示特定作者的提交
  • --since=<时间>:只显示指定时间之后的提交
  • --until=<时间>:只显示指定时间之前的提交
  • --grep=<模式>:只显示包含指定模式的提交消息
  • --no-merges:不显示合并提交
  • --stat:显示简略统计信息,包括修改的文件和行数
  • --abbrev-commit:使用短提交哈希值
  • --pretty=<格式>:使用自定义的提交信息显示格式

git blame 文件名 以列表形式显示修改记录

3.3版本穿梭

  • git reset 版本号暂存区的目录树会被重写,被定义版本号指向的目录树所替换,但工作区不受影响
  • git rm --cached 文件名会直接从暂存区删除文件,工作区不作出改变
  • git checkout . 或者 git checkout -- 文件名会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动
  • git checkout 分支名 .或者git checkout -- 文件名会用定义或指向分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

4Git分支操作

4.1分支概述及优点

  • 在版本控制过程中,同时推进多个任务,为每个任务可以创建单独分支,意味着可以将工作从开发主线上分离开来,开发分支不影响主线运行,可理解为副本
  • 并行推进多个功能开发,提高效率
  • 各个分支在开发过程中,单个分支开发失败,不会影响其他分支,失败分支可重新开始

4.2分支操作

git branch 分支名 #创建分支
git branch -v #查看分支
git checkout 分支名 #切换分支
git checkout -b 分支名 #创建新分支并切换
git switch 分支名 #切换分支
git switch -c 新分支名 #创建新分支并切换
git merge 分支名 #把指定的分支合并到当前分支上
git branch -d 分支名 #删除分支
4.2.1查看分支

git branch -v

4.2.2创建分支

git branch 分支名

4.2.3切换分支

git checkout 分支名

4.2.4合并分支

git checkout 主分支

git merge 分支名

  • 分支冲突:当要合并的两个分支存在对同一文件进行修改,git无法确定作哪一修改
  • 解决冲突:修改master中相同文件的内容,不修改合并分支中相同文件的内容
    • 在master分支确定要修改的文件及内容,git add 文件名
    • git commit -m “日志” (后不能加文件名,否则会报错)
    • 合并分支的同文件不做改变,git merge 合并分支名
4.2.5删除分支

git branch -d 分支名

5远程仓库

在这里插入图片描述
上图来自RUNOOB Git教程

5.1在github/gittee上创建远程仓库

5.2远程仓库操作

git remote -v #查看当前所有远程地址别名
git remote add 别名 远程地址 #起别名(第一次)
git push 别名 分支 #推送本地分支上的内容到远程仓库
git clone 远程地址 #将远程仓库的内容科隆到本地(第一次)
git pull 远程库地址别名 远程分支名 #将远程仓库对于分支最新内容拉下来后与当前本地分支直接将合并
5.2.1克隆仓库到本地

git clone 远程地址,执行该命令会默认处于master分支下,也会自动将origin设置成该远程仓库的标识符

git clone 远程地址 新名字克隆仓库并在本地修改仓库名

设置提交代码时的用户信息

git config --global user.name "abc"
git config --global user.email abc@qq.com
#如果去掉 --global 参数只对当前仓库有效。
5.2.2未工作区增加远程仓库
git remote -v #先查看当前所有远程地址一般会叫origin
git remote add 仓库别名 远程地址 #增加远程仓库
git remote -v #再次查看当前所有远程地址
#会有两个仓库,又分别有1个可以推送(push) 一个可以拉取(fetch)#删除仓库
git remote rm 仓库名
5.2.3推送本地分支到远程仓库

git push 远程仓库地址别名 分支名,推送的最小单位是分支,所以一定要指定分支,例如:git push origin master

5.2.4拉取远程仓库内容

git pull 远程仓库地址别名 分支名,例如:git pull origin master

6版本控制(查看与更新远程分支)

git fetch 获取远程仓库中最新的提交和分支信息,但不会自动合并到当前分支上

例如:git fetch origin 从名为origin的远程仓库获取所有分支的最新更改

git diff 比较本地分支和远程分支之间的差异,避免潜在冲突,例如git diff HEAD origin/分支名,HEAD 是指当前分支的最新提交

然后进行合并:git merge orgin/分支名

相关文章:

Git基本使用教程(学习记录)

参考文章链接&#xff1a; Git教程&#xff08;超详细&#xff0c;一文秒懂&#xff09; RUNOOB Git教程 Git学习记录 1Git概述 1.1版本控制软件功能 版本管理&#xff1a;更新或回退到历史上任何版本&#xff0c;数据备份共享代码&#xff1a;团队间共享代码&#xff0c;…...

【Linux-RTC】

Linux-RTC ■ rtc_device 结构体■ RTC 时间查看与设置■ 1、时间 RTC 查看■ 2、设置 RTC 时间 ■ rtc_device 结构体 Linux 内核将 RTC 设备抽象为 rtc_device 结构体 rtc_device 结构体&#xff0c;此结构体定义在 include/linux/rtc.h 文件中 ■ RTC 时间查看与设置 ■ 1…...

机器学习目录

文章目录 基本概念有监督学习回归问题分类问题 无监督学习聚类问题异常检测 基本概念 pass 有监督学习 回归问题 通过拟合函数&#xff0c;解决连续值的预测问题梯度下降法优化&#xff1b;最小二乘法求解&#xff1b;度量指标 均方误差&#xff1b;均方根误差&#xff1b;平…...

React开发环境配置详细讲解-04

环境简介 前端随着规范化&#xff0c;可以说规范和环境插件配置满天飞&#xff0c;笔者最早接触的是jquery&#xff0c;那个开发非常简单&#xff0c;只要引入jquery就可以了&#xff0c;当时还写了一套UI框架&#xff0c;至今在做小型项目中还在使用&#xff0c;show一张效果…...

Go 如何通过 Kafka 客户端库 生产与消费消息

文章目录 0.前置说明1. confluent-kafka-go2. sarama3. segmentio/kafka-go4. franz-go选择建议 1.启动 kafka 集群2.安装 confluent-kafka-go 库3.创建生产者特殊文件说明如何查看.log文件内容 4.创建消费者 0.前置说明 Go 语言中有一些流行的 Kafka 客户端库。以下是几个常用…...

【设计模式深度剖析】【B】【结构型】【对比】| 主要区别包装的不同

&#x1f448;️上一篇:享元模式 回 顾&#xff1a;结构型设计模式 1.代理模式&#x1f448;️ 2.装饰器模式&#x1f448;️ 3.适配器模式&#x1f448;️ 4.组合模式&#x1f448;️ 5.桥接模式&#x1f448;️ 6.外观模式&#x1f448;️ 7.享元模式&#x…...

信息学奥赛初赛天天练-17-阅读理解-浮点数精准输出与海伦公式的巧妙应用

PDF文档公众号回复关键字:20240531 1 2023 CSP-J 阅读程序1 阅读程序&#xff08;程序输入不超过数组成字符串定义的范围&#xff1a;判断题正确填√&#xff0c;错误填&#xff1b;除特殊说明外&#xff0c;判断题1.5分&#xff0c;选择题3分&#xff0c;共计40分&#xff0…...

mysql - 为什么MySQL不建议使用NULL作为列默认值?

为什么MySQL不建议使用NULL作为列默认值&#xff1f; InnoDB有4中行格式&#xff1a; Redundant : 非紧凑格式,5.0 版本之前用的行格式,目前很少使用,Compact : 紧凑格式,5.1 版本之后默认行格式,可以存储更多的数据Dynamic , Compressed : 和Compact类似,5.7 版本之后默认使…...

数据分析案例-在线食品订单数据可视化分析与建模分类

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

构建LangChain应用程序的示例代码:2、使用LangChain库实现的AutoGPT示例:查找马拉松获胜成绩

AutoGPT 示例&#xff1a;查找马拉松获胜成绩 实现 https://github.com/Significant-Gravitas/Auto-GPT&#xff0c;使用LangChain基础组件&#xff08;大型语言模型(LLMs)、提示模板(PromptTemplates)、向量存储(VectorStores)、嵌入(Embeddings)、工具(Tools)&#xff09;。…...

代码随想录算法训练营第三十四 |● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果

今天的解析写在了代码注释中 1005.K次取反后最大化的数组和 讲解链接&#xff1a;https://programmercarl.com/1005.K%E6%AC%A1%E5%8F%96%E5%8F%8D%E5%90%8E%E6%9C%80%E5%A4%A7%E5%8C%96%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.html class Solution { public:static bool cmp(i…...

GB-T 43206-2023 信息安全技术 信息系统密码应用测评要求

GB-T 43206-2023 信息安全技术 信息系统密码应用测评要求 编写背景 随着信息技术的飞速发展&#xff0c;信息系统在社会经济活动中扮演着越来越重要的角色。信息安全问题也随之成为社会关注的焦点。GB-T 43206-2023《信息安全技术 信息系统密码应用测评要求》是针对信息系统中…...

线程进阶-1 线程池

一.说一下线程池的执行原理 1.线程池的七大核心参数 &#xff08;1&#xff09;int corePoolSize&#xff1a;核心线程数。默认情况下核心线程会一直存活&#xff0c;当设置allowCoreThreadTimeout为true时&#xff0c;核心线程也会被超时回收。 &#xff08;2&#xff09;i…...

LabVIEW中PID控制器系统的噪声与扰动抑制策略

在LabVIEW中处理PID控制器系统中的噪声和外部扰动&#xff0c;需要从信号处理、控制算法优化、硬件滤波和系统设计四个角度入手。采用滤波技术、调节PID参数、增加前馈控制和实施硬件滤波器等方法&#xff0c;可以有效减少噪声和扰动对系统性能的影响&#xff0c;提高控制系统的…...

JavaWeb笔记整理+图解——Listener监听器

欢迎大家来到这一篇章——Listener监听器 监听器和过滤器都是JavaWeb服务器三大组件&#xff08;Servlet、监听器、过滤器&#xff09;之一&#xff0c;他们对于Web开发起到了不可缺少的作用。 ps&#xff1a;想要补充Java知识的同学们可以移步我已经完结的JavaSE笔记&#x…...

AIGC智能办公实战 课程,祝你事业新高度

在数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面&#xff0c;从智能家居到自动驾驶&#xff0c;从医疗诊断到金融分析&#xff0c;AI助手正在改变我们的工作方式和生活质量。那么&#xff0c;你是否想过自己也能从零开始&#xff0c;…...

专科生听劝 这种情况你就不要专转本了

罗翔老师说过&#xff0c;读书学习主要作用是提高人的下限 我们能掌握的只有学习&#xff0c;以确保学历不会太差再去等机遇让自己活得更好 大部分情况来说&#xff0c;专科生努力去专转本挺好的提升自己准没错&#xff0c;我当年也是一心这样想的&#xff0c;但今天不得不说点…...

MySQL增删查改初阶

目录 一&#xff0c;数据库操作 1.关键字 show 显示当前数据库有哪些&#xff1a;show databases&#xff1b; 2.创建数据库 3.选中数据库 4.删除数据库 二&#xff0c;表的操作&#xff0c;在选中数据库的基础之上 1.查看表的结构 2.创建表 3.查看当前选中的数据库中…...

IService 接口中定义的常用方法

文心一言生成 以下是一些 IService 接口中定义的常用方法&#xff08;以你提供的 UserSQL 类为例&#xff0c;该类继承自 ServiceImpl&#xff0c;因此也会拥有这些方法&#xff09;&#xff1a; 插入&#xff08;新增&#xff09; boolean save(T entity): 插入一条记录&…...

api网关kong对高频的慢接口进行熔断

一、背景 在生产环境&#xff0c;后端服务的接口响应非常慢&#xff0c;是因为数据库未创建索引导致。 如果QPS低的时候&#xff0c;因为后端服务有6个高配置的节点&#xff0c;虽然接口慢&#xff0c;还未影响到服务的正常运行。 但是&#xff0c;当QPS很高的时候&#xff0c…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...