Git 基础 GitHub【学习笔记】

news2024/12/23 13:54:39

一、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.coloradmin.cn/o/1951727.html

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

相关文章

【更新2022】地级市城镇 农村居民可支配收入 2001-2022

地级市城镇和农村居民的可支配收入可以用于各种科研领域。他们可以用这些资金支持基础科学研究&#xff0c;推动新技术和创新的发展。他们可以投资于医学研究&#xff0c;促进健康和医疗领域的进步。他们还可以支持环境科学研究&#xff0c;以解决环境问题和可持续发展挑战。此…

2.1、matlab绘图汇总(图例、标题、坐标轴、线条格式、颜色和散点格式设置)

1、前言 在 MATLAB 中进行绘图是一种非常常见且实用的操作&#xff0c;可以用来可视化数据、结果展示、分析趋势等。通过 MATLAB 的绘图功能&#xff0c;用户可以创建各种类型的图形&#xff0c;包括线图、散点图、柱状图、曲线图等&#xff0c;以及三维图形、动画等复杂的可视…

C语言 | Leetcode C语言题解之第295题数据流的中位数

题目&#xff1a; 题解&#xff1a; typedef struct Heap {int* array; //存放堆的数组int capacity;//数组的容量int len; //已存数组的大小 }Heap;/*大小根堆切换开关*/ int HeapLen(Heap* hp); //heap获取当前的堆大小 void Heap…

安装VMware Workstation Pro

一、下载 通过百度网盘分享的文件&#xff1a;VMware-workstation-full-16.2.4-2008... 链接&#xff1a;https://pan.baidu.com/s/1mDnFhLQErBlpeX_KjsgtzA 提取码&#xff1a;0bw7 二、安装 &#xff08;1&#xff09;双击exe文件 &#xff08;2&#xff09;安装软件 &…

本地部署Graphhopper路径规划服务(graphhopper.sh启动版)

文章目录 文章参考源码获取一、配置Java环境变量二、配置Maven环境变量三、构建graphhopper步骤1. 下载数据2. 配置graphhopper配置文件config-example.yml3. 在项目中启动命令行执行./graphhopper.sh build3.1|、遇到的问题3.1.1、pom.xml中front-maven-plugin-无法下载npm6.1…

结构型设计模式-组合模式

一、组合模式 对于这个图片肯定会非常熟悉&#xff0c;上图我们可以看做是一个文件系统&#xff0c;对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树&#xff0c;当我们找到某个叶子节点后&#xff0c;就可以对叶子节点进行相关的操作。可以将…

Python安装库太慢?配置好这个速度飞起

经常听到初学python的小伙伴在抱怨&#xff0c;python安装第三方库太慢&#xff0c;很容易失败报错&#xff0c;如果安装pandas、tensorflow这种体积大的库&#xff0c;简直龟速。 为什么pip会很慢&#xff1f; 先来了解下pip&#xff0c;pip是一个非常流行的python包管理工具…

【苍穹】完美解决由于nginx更换端口号导致无法使用Websocket

一、报错信息 进行到websocket开发的过程中&#xff0c;遇到了前端报错&#xff0c;无法连接的提示&#xff1a; 经过F12排查很明显是服务端和客户端并没有连接成功。这里就涉及到之前的坑&#xff0c;现在需要填上了。 二、报错原因和推导 应该还记得刚开苍穹的第一天配置前…

技术实践—微前端技术应用

微前端是一种新兴的前端架构模式&#xff0c;是一种类似于微服务的架构&#xff0c;将微服务的理念应用于浏览器端。其核心理念是将一个大而单一的前端应用拆分为多个小型独立的微应用。这些微应用各自独立&#xff0c;可以由不同团队开发维护&#xff0c;部署&#xff0c;组合…

docker发布镜像到自己远程私有仓库

1、登录docker hub创建自己的仓库地址&#xff1a;https://hub.docker.com/repository/create 输入仓库名称 2.构建镜像 略过。。。。请自己查找别的资料&#xff0c;此篇文章只讲述镜像推送到远程 3.推送 假设你已经构建了一个镜像 web/online-editor:latest&#xff0c;现…

【React学习打卡第二天】

受控表单绑定、React获取Dom\组件通信、useEffect、自定义hook函数和ReactHooks使用规则 一、受控表单绑定1.准备React状态值2.通过value属性绑定状态&#xff0c;通过onChange属性绑定状态同步的函数 二、React中获取DOM1. 使用useRef创建 ref 对象&#xff0c;并与 JSX 绑定2…

使用图数据库Nebula Graph快速上手史上最大规模的中文知识图谱ownthink_v2教程(没写完,明天再写)

一、前言 本教程主要参考官方教程&#xff1a;使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink (nebula-graph.com.cn) 来带着大家一步一步复现实验内容。 本教程主要使用到的数据集&#xff1a; ownthink/KnowledgeGraphData: 史上最大规模1.4亿中文知识图谱…

MySQL 存储

关系型数据库是基于关系模型的数据库&#xff0c; 而关系模型是通过二维表来保存的&#xff0c;所以关系型数据库中的数据的村方式就是行列组成的表&#xff0c;每一列代表一个字段&#xff0c;每一行代表一条记录。表可以看作某个实体的集合&#xff0c;实体之间存在的联系需要…

【北京迅为】《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;经常会遇到网络卡或者token数量、使用次数限制的问题。而国内的大模型工具虽然不存在网络的问题&#xff0c;但…

简单几步,教你使用scikit-learn做分类和回归预测

经常听到初学python的小伙伴在抱怨&#xff0c;python安装第三方库太慢&#xff0c;很容易失败报错&#xff0c;如果安装pandas、tensorflow这种体积大的库&#xff0c;简直龟速。 为什么pip会很慢&#xff1f; 先来了解下pip&#xff0c;pip是一个非常流行的python包管理工具…

基于微信小程序+SpringBoot+Vue的资料分享系统(带1w+文档)

基于微信小程序SpringBootVue的资料分享系统(带1w文档) 基于微信小程序SpringBootVue的资料分享系统(带1w文档) 校园资料分享微信小程序可以实现论坛管理&#xff0c;教师管理&#xff0c;公告信息管理&#xff0c;文件信息管理&#xff0c;文件收藏管理等功能。该系统采用了Sp…

初识C++ · AVL树(2)

目录 前言&#xff1a; 1 左右旋 2 右左旋 3 部分细节补充 3.1 单旋和插入 3.2 部分小函数 前言&#xff1a; AVL树作为一种结构&#xff0c;理解树的本身是不大难的&#xff0c;难的在于&#xff0c;树旋转之后的连接问题&#xff0c;写AVL树的代码大部分都是在旋转部分…

在jeesite开源平台上写了一个SQL命令中心的功能

实现目的: 这个SQL命令中心,是因为老项目就有这个页面,主要的功能是根据写出的SQL语句查询数据,并且在查出的数据基础上直接修改更新,还有新增和删除的功能,这么一说跟plsql就一样一样的了;这页面本来是给运维的同事来用,而且他们还会用plsql和Navicat等SQL语言操作工…

[OJ]平均串问题,存在超时问题未解决

众所周知&#xff0c;两个数a和b的平均数计算公式为(ab)/2。 实际上平均数也可以描述为&#xff1a;从较小的数依次遍历到较大的数&#xff0c;将遍历的数放入一个列表中&#xff0c;该列表的中心元素。例如&#xff1a;求 3和7的平均数&#xff0c;列表为{3,4,5,6,7}&#xff…