Git 基础 GitHub【学习笔记】

一、Git 优势

  • 大部分操作在本地完成,不需要联网
  • 完整性保证
  • 尽可能添加数据而不是删除或修改数据
  • 分支操作非常快捷流畅
  • 与 Linux 命令全面兼容

二、Git 程序安装

https://git-scm.com

三、Git 结构

git add
git commit
工作区--写代码
暂存区--临时存储
本地库--历史版本

四、Git 和 代码托管中心

  • 局域网环境下
    • GitLab 服务器
  • 外网环境下
    • GitHub
    • 码云

五、本地库和远程库

  • 团队内部协作

    push
    clone
    push-'加入团队'
    pull
    本地库1
    远程库
    本地库2
  • 跨团队协作

    fork
    clone
    push
    merge <- 审核 <- pull request
    pull
    pull
    远程库1
    远程库2
    本地库2-1
    本地库1-1
    本地库1-2

六、Git 命令行操作

1、本地库初始化

  • 命令:git init
  • 效果:在这里插入图片描述
  • 注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要随意修改

2、设置签名

  • 形式:
    • 用户名
    • Email 地址
  • 作用:区分不同开发人员的身份
  • 辨析:这里的签名与登录远程库(代码托管中心)的账号密码没有任何关联
  • 命令:
    • 项目级别 / 仓库级别:仅在当前本地库范围内有效
      • git config user.name abcdefg
      • git config user.email abcdefg_pro@123.com
      • 信息保存位置:./.git/config
    • 系统用户级别:登录当前操作系统的用户范围
      • git config --global user.name abcdefg
      • git config --global user.email abcdefg_pro@123.com
      • 信息保存的位置:~/.gitconfig
    • 优先级:(就近原则)项目级别 > 系统用户级别

3、基本操作

  • 状态查看操作
    git status
    查看工作区、暂存区状态
  • 添加操作
    git add [file name]
    将工作区的“新建/修改”添加到暂存区
  • 提交操作
    git commit -m 'commit message' [file name]
    将暂存区的内容提交到本地库
  • 查看历史记录
    git log(多屏显示控制方式:空格向下翻页;b 向上翻页;q 退出)
    git log --pretty=oneline
    git log --oneline
  • 前进后退
    • 本质
      git reflog
    • 基于索引值操作(推荐)
      git reset --hard [局部索引值]
    • 使用 ^ 符号:只能往后退
      git reset --hard HEAD^
      一个 ^ 表示后退一步,n 个表示后退 n 步
    • 使用 ~ 符号:只能后退
      git reset --hard HEAD~n
      表示后退 n 步
  • reset 命令的三个参数对比
    • soft 参数:仅仅在本地库移动 HEAD 指针
    • mixed 参数:在本地库移动 HEAD 指针,并重置暂存区
    • head 参数:在本地库移动 HEAD 指针,并且重置暂存区和工作区
  • 删除文件并找回
    • 前提:删除前文件存在是的状态提交到了本地库
    • 操作:git reset --hard [指针位置]
  • 比较文件差异
    git diff [文件名]:将工作区中的文件和暂存区进行比较
    git diff [本地库中历史版本]:将工作区中的文件和本地库历史记录比较
    不带文件名比较多个文件

4、分支管理

在版本控制过程中,使用多条线同时推进多个任务。

好处:

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果其中一个分支失败不会对其他分支产生任何影响
分支操作
  • 创建分支
    git branch [分支名]
  • 查看分支
    git branch -v
  • 切换分支
    git checkout [分支名]
  • 合并分支
    • 切换到接受修改的分支上(被合并、增加新内容)上
      git checkout [被合并分支名]
    • 执行 merge 命令
      git merge [有新内容分支名]
  • 解决冲突
    • 编辑文件,删除特殊符号
    • 把文件修改到满意程度,保存退出
    • git add [文件名]
    • git commit -m "日志信息"(此时 commit 不能带任何文件名)

七、Git 基本原理

哈希

  • 不论输入的数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定
  • 哈希算法确定,输入数据确定,输出数据能够保持不变
  • 哈希算法确定,输入数据在变化,输出数据一定变化,而通常变化很大
  • 哈希算法不可逆

Git 底层采用的是 SHA-1 算法

原理:

SHA-1
SHA-1
原始文件
2f9a352d8291ccbeea00628489141e45fd081a
网络传输
目标文件
8369f40251df6eb213d0a92a5b0390e5c8805b4d
对比 -> 不一致 -> 目标文件有损坏

八、GitHub

1、创建远程库

New repository
Repository name
Create repository

2、在本地创建远程库地址别名

git remote -v:查看当前所有远程地址别名

git remote add [别名] [远程库https地址]

3、推送操作

git push [别名] [分支名]

4、克隆

  • 命令:
    git clone [远程地址]
  • 效果:
    • 完整地把远程库下载到本地
    • 创建 origin 远程地址别名
    • 初始化本地库

5、拉取

  • pull = fetch + merge
  • git fetch [远程库地址别名] [远程分支名]
  • git merge [远程库地址别名/远程分支名]
  • git pull [远程库地址别名] [远程分支名]

6、解决冲突

如果不是最新推送,必须先拉取

7、跨团队协作

  • 点击 Fork

  • 本地修改,然后推送到远程

  • Pull Request
    New pull request
    Create pull request
    Pull Request
    commits
    Files changed
    Conversation
    Merge pull request
    Confirm merge
  • 对话

  • 审核代码

  • 将远程库拉取到本地

8、SSH 登录

  • 进入当前用户的加目录
    cs ~

  • 删除 .ssh 目录
    rm-rvf .ssh

  • 运行命令生成 .ssh 密钥目录
    ssh-keygen -t rsa -C abcdefg@123456.com
    [注意这里 -C 这个参数是大写]

  • 进入 .ssh 目录查看文件列表
    cd .ssh
    ls - lF

  • 查看 id_rsa.pub 文件内容
    cat id_rsa.pub

  • 复制 id_rsa.pub 文件内容,登录 GitHub

    用户头像
    Settings
    SSH and GPG keys
  • New SSH Key

  • 输入复制的密钥信息

  • 回到 Git hash 创建远程地址别名
    git remote add origin_ssh git@github.com:abcdefg@123456/[项目名称].git

  • 推送文件进行测试

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

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

相关文章

运维锅总详解NFS

NFS是什么&#xff1f;如何对NFS进行部署及优化&#xff1f;NFS工作流程是什么&#xff1f;NFS的性能及优缺点是什么&#xff1f;NFS发展历史又是怎样的&#xff1f;希望本文能帮您解答这些疑惑&#xff01; 一、NFS简介 NFS (Network File System) 是由 Sun Microsystems 在…

论文精读(保姆级解析)—— Flash Diffusion

0 前言 今天分析的论文是《Flash Diffusion: Accelerating Any Conditional Diffusion Model for Few Steps Image Generation》。该论文发表在2024年&#xff0c;目前已开源在arxiv上&#xff0c;主要提出了一种高效、快速且多功能的蒸馏方法&#xff0c;用于加速预训练扩散模…

[C++][STL源码剖析] 详解AVL树的实现

目录 1.概念 2.实现 2.1 初始化 2.2 插入 2.2.1 旋转&#xff08;重点&#xff09; 左单旋 右单旋 双旋 2.❗ 双旋后&#xff0c;对平衡因子的处理 2.3 判断测试 完整代码&#xff1a; 拓展&#xff1a;删除 1.概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但…

遇到Websocket就不会测了?别慌,学会这个Jmeter插件轻松解决....

websocket 是一种双向通信协议&#xff0c;在建立连接后&#xff0c;websocket服务端和客户端都能主动向对方发送或者接收数据&#xff0c;而在http协议中&#xff0c;一个request只能有一个response&#xff0c;而且这个response也是被动的&#xff0c;不能主动发起。 websoc…

【研路导航】保研英语面试高分攻略,助你一路过关斩将

面试攻略之 千锤百炼英语口语 写在前面 在保研面试中&#xff0c;英语口语往往是让许多同学感到头疼的一部分。如何在面试中展现出自信和流利的英语表达能力&#xff0c;是我们今天要探讨的主题。以下是一些有效的英语口语练习方法和常见题型解析&#xff0c;帮助你在保研面试…

LoRA:低秩自适应

LoRA:低秩自适应 本章节是对轻松上手微调大语言模型——QLORA篇中提到的LoRA的原理解释。 背后动机 现今模型的参数量变得越来越大&#xff0c;对预训练模型进行全微调变得越来越不可行。为了解决这个问题有了LoRA&#xff08;Low-Rank Adaption&#xff09;的诞生。将可训练…

Nginx制作下载站点

使用nginx制作一个类似nginx官网的下载站点 如何制作一个下载站点,首先需要ngx_http_autoindex_module模块 该模块处理以斜杠(“/”)结尾的请求&#xff0c;并生成目录列表。 nginx编译的时候会自动加载该模块&#xff0c;但是该模块默认是关闭的&#xff0c;需要使用下来指令…

3 FreeRTOS移植(从FREERTOS官网移植进自己的工程)

3 FreeRTOS移植 1 获取FreeRTOS源码&#xff08;熟悉&#xff09;1.1 介绍源码内容1.2 FreeRTOS内核1.2.1 Demo文件夹1.2.2 Source文件夹1.2.2.1 portable文件夹 2 FreeRTOS手把手移植&#xff08;掌握&#xff09;&#xff08;重要&#xff09;2.1 移植步骤 3 系统配置文件说明…

GraphHopper-map-navi_路径规划、导航(web前端页面版)

文章目录 一、项目地址二、踩坑环境三、问题记录3.1、graphhopper中地图问题3.1.1. getOpacity不存在的问题3.1.2. dispatchEvent不存在的问题3.1.3. vectorLayer.set(background-maplibre-layer, true)不存在set方法3.1.4. maplibre-gl.js.map不存在的问题3.1.5. Uncaught Ref…

学习记录:ESP32控制舵机 FREERTOS BLE

控制舵机 PWM信号 PWM信号是一种周期性变化的方波信号&#xff0c;它有两个关键参数&#xff1a; 周期&#xff08;Period&#xff09;&#xff1a;一个完整的PWM信号的时间长度&#xff0c;通常用秒&#xff08;s&#xff09;或毫秒&#xff08;ms&#xff09;表示。占空比…

FFmpeg解复用器如何从封装格式中解析出不同的音视频数据

目录 1、ffmpeg介绍 2、FFMPEG的目录结构 3、FFmpeg的格式封装与分离 3.1、数据结构 3.2、封装和分离(muxer和demuxer) 3.2.1、Demuxer流程 3.2.2、Muxer流程 4、总结 4.1、播放器 4.2、转码器 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续…

微服务上(黑马)

文章目录 微服务011 认识微服务1.1 单体架构1.2 微服务1.3 SpringCloud 2 微服务拆分2.1 熟悉黑马商城2.2 服务拆分原则2.2.1.什么时候拆2.2.2.怎么拆 2.3 拆分服务2.3.1 拆分商品管理功能模块2.3.2 拆分购物车功能模块 2.4 远程调用2.4.1 RestTemplate2.4.2.远程调用 2.5 总结…

顺序表算法题

在学习了顺序表专题后&#xff0c;了解的顺序表的结构以及相关概念后就可以来试着完成一些顺序表的算法题了&#xff0c;在本篇中将对三道顺序表相关的算法题进行讲解&#xff0c;希望能对你有所帮助&#xff0c;一起加油吧&#xff01;&#xff01;&#xff01; 1.移除元素 2…

nginx转发netty长链接(nginx负载tcp长链接配置)

首先要清楚一点&#xff0c;netty是长链接是tcp连接不同于http中负载在http中配置server监听。长连接需要开启nginx的stream模块(和http是并列关系) 安装nginx时注意开启stream&#xff0c;编译时加上参数 --with-stream &#xff08;其他参数根据自己所需来加&#xff09; …

脊髓损伤的小伙伴锻炼贴士

Hey小伙伴们~&#x1f44b; 今天要跟大家聊一个超燃又超温馨的话题&#xff01;&#x1f31f; 对于我们脊髓损伤的小伙伴们来说&#xff0c;保持身体活力&#xff0c;不仅是健康的小秘诀&#xff0c;更是拥抱美好生活的超能量哦&#xff01;&#x1f4aa; #脊髓损伤# 首先&…

Cache 替换策略--PLRU算法详解

一、引言 LRU&#xff08;Least Recently Used&#xff09;是 cache 的经典替换策略之一&#xff0c;但当 Cache 的路数比较大时&#xff08;多路组相连结构&#xff09;&#xff0c;实现 LRU 的硬件开销就会变得很大。现代处理器一般会考虑使用 PLRU&#xff08;pseudo-LRU&a…

一文带你搞懂C++运算符重载

7. C运算符重载 C运算符重载 什么是运算符重载 运算符重载赋予运算能够操作自定义类型。 运算符重载前提条件&#xff1a; 必定存在一个自定义类型 运算符重载实质: 就是函数调用 友元重载 类重载 在同一自定义类型中&#xff0c;一个运算符只能被重载一次 C重载只能重载…

vue element-ui日期控件传参

前端&#xff1a;Vue element-ui <el-form-item label"过期时间" :rules"[ { required: true, message: 请选择过期时间, trigger: blur }]"><el-date-picker v-model"form.expireTime" type"date" format"yyyy-MM-dd&…

【C++】透析类和对象(下)

有不懂的可以翻阅我之前文章&#xff01; 个人主页&#xff1a;CSDN_小八哥向前冲 所属专栏&#xff1a;CSDN_C入门 目录 拷贝构造函数 运算符重载 赋值运算符重载 取地址运算符重载 const成员函数 取地址重载 再探构造函数 初始化列表 类型转换 static成员 友元 内…