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://xiahunao.cn/news/3269934.html

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

相关文章

全球耐辐射电机驱动器市场规模预测:未来六年年复合增长率CAGR为5.1%

据恒州诚思研究&#xff0c;2023年全球耐辐射电机驱动器市场规模大约为20亿元&#xff0c;预计未来六年年复合增长率CAGR为5.1%&#xff0c;到2030年市场规模将接近28亿元。这一增长反映了耐辐射电机驱动器在全球市场中的重要性及其在未来发展中的潜在机会。随着技术的进一步发…

探索 Electron:构建用户友好的登录页面流程

Electron是一个开源的桌面应用程序开发框架&#xff0c;它允许开发者使用Web技术&#xff08;如 HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序&#xff0c;它的出现极大地简化了桌面应用程序的开发流程&#xff0c;让更多的开发者能够利用已有的 Web 开发技能…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十九章 等待队列

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

远程项目调试-informer2020

informer2020 Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting(原文&#xff09;Informer 是一个基于Transformer的模型&#xff0c;是为了应对长依赖关系而开发的。本文的主要主题是序列预测。序列预测可以在任何具有不断变化的数据的地方…

【STM32物联网】基于STM32+ESP8266+手机APP设计的智能密码锁源码原理图APP文档

实物图 1.摘要 设计了一种基于单片机的智能密码锁系统,提供了一种安全度高、智能化 便捷的门锁解决方案。系统由多个关键模块组成,包括 STM32 主控芯片、 RC522 射频 卡模块、指纹采集模块、矩阵按键、LCD 显示屏、 WiFi 模块和继电器等。这些模块发挥 着重要的功…

回溯的undo choice

重写N皇后和分割回文串,发现会想不明白path.remove(path.size() - 1)是在if里面还是if外面&#xff0c;问了GPT感觉很清楚 题目 N皇后 class Solution {List<List<Integer>> res new ArrayList<>();List<Integer> path new ArrayList<>();pu…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十八章 Platform 设备驱动

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

微信小程序之调查问卷

一、设计思路 1、界面 调查问卷又称调查表&#xff0c;是以问题的形式系统地记载调查内容的一种形式。微信小程序制作的调查问卷&#xff0c;可以在短时间内快速收集反馈信息。具体效果如下所示&#xff1a; 2、思路 此调查问卷采用服务器客户端的方式进行设计&#xff0c;服…

【0300】Postgres内核之 INSERT INTO 原始解析树 转 Query 树 (2 - 1)

1. 前言 在【0298】Postgres内核之 INSERT INTO 原始解析树 转 Query 树 (2)一文中讲解过Postgres内核在通过RangeVar打开一个目标关系表时,在函数parserOpenTable()中,会注册parser错误位置报告回调函数。 同时也说明了这个注册过程的使用模式。 本文将继续讲解该使用模…

【Linux】-----工具篇(编译器gcc/g++,调试器gdb)

目录 一、gcc/g 简单认识 程序的翻译过程认识gcc 预处理(宏替换) 编译 汇编 链接 宏观认识 如何理解&#xff08;核心&#xff09; 什么是链接&#xff1f; 链接的分类 二、gdb 基本的认识 基本操作及指令 安装gdb 启动gdb ​编辑 显示源代码(list) 运行程序…

【云原生】Docker搭建知识库文档协作平台Confluence

目录 一、前言 二、企业级知识库文档工具部署形式 2.1 开源工具平台 2.1.1 开源工具优点 2.1.2 开源工具缺点 2.2 私有化部署 2.3 混合部署 三、如何选择合适的知识库平台工具 3.1 明确目标和需求 3.2 选择合适的知识库平台工具 四、Confluence介绍 4.2 confluence特…

动视发布长篇“论文”试图证明:没有SBMM 只有高手受益

SBMM——基于技能的比赛匹配系统&#xff0c;一直是《使命召唤》和广大 FPS 玩家所诟病的东西&#xff0c;但是《使命召唤》抱怨的玩家最多&#xff0c;因为似乎它所使用的匹配系统是让技术较好的玩家体验最糟糕的。 动视在此前一改对匹配系统避而不谈的态度后&#xff0c;日前…

鸿蒙开发——axios封装请求、拦截器

描述&#xff1a;接口用的是PHP&#xff0c;框架TP5 源码地址 链接&#xff1a;https://pan.quark.cn/s/a610610ca406 提取码&#xff1a;rbYX 请求登录 HttpUtil HttpApi 使用方法

Hadoop单机版环境搭建

一 . 案例信息 Hadoop 的安装部署的模式一共有三种&#xff1a; 本地模式&#xff0c;默认的模式&#xff0c;无需运行任何守护进程&#xff08; daemon &#xff09;&#xff0c;所有程序都在单个 JVM 上执行。由 于在本机模式下测试和调试 MapReduce 程序较为方便&#x…

Object Detection in 20 Years: A Survey 论文阅读

前言 如果要学习目标检测&#xff0c;那了解目标检测发展历程和各个技术将有助于更好地学习。所以今天我们看一篇来自IEEE的综述。 论文名&#xff1a;Object Detection in 20 Years: A Survey 论文作者&#xff1a;Zhengxia Zou et.al. 期刊/会议名&#xff1a;IEEE 发表时间…

日记审计遵守合规安全要求

一、什么是日志审计系统 日记审计系统是一种用于记录、监视和分析系统日志的工具或系统。它主要用于帮助组织实时监控与分析各种事件和行为的日志记录&#xff0c;以便检测潜在的安全威胁&#xff0c;了解系统性能和进行故障排除。日志审计系统通常能够收集、存储和分析来自各…

用Python做一个翻译软件,比上浏览器快100倍

简单的用Python来做一个翻译软件 开发环境 Python 3.10 Pycharm模块使用 requests -> pip install requests hashlib tkinter案例分为三部分: 1. 爬虫: 获取翻译接口, 请求获取翻译结果问题1: 接口抓包分析问题2: 请求需要写cookie问题3: 不同文本翻译, s加密参数2. 界面…

PHP多场地预定小程序系统源码

一键畅游多地&#xff01;多场地预定小程序的超实用指南 段落一&#xff1a;【开篇&#xff1a;告别繁琐&#xff0c;预订新体验】 &#x1f389;&#x1f680; 还在为多个活动或会议的场地预订而头疼不已吗&#xff1f;多场地预定小程序来拯救你啦&#xff01;它像是一位贴心…

[Windows CMD] 检测网络连通性 ping

ping 是一个非常常用的网络工具&#xff0c;用于测试网络连接的可达性和测量网络延迟。它通过发送 ICMP (Internet Control Message Protocol) Echo Request 数据包到目标主机&#xff0c;并等待接收回显应答 (Echo Reply) 来工作。ping 命令可以帮助您快速检测网络问题&#x…

blender使用- 置换修改器

置换修改器 对于物体可以先做细分&#xff0c;然后添加置换修改器&#xff0c;添加贴图。再对贴图的参数进行修改&#xff0c;渲染想要的效果。 旋转模式下&#xff08;按下s&#xff09;&#xff0c;z表示方向&#xff0c;0表示平整