Git_2024/11/16

devtools/2024/11/18 9:12:12/

文章目录

  • 前言
  • Git是什么
    • 核心概念
    • 工作流程
    • 常见术语解读
    • Git的优势
  • Git与SVN对比
    • SVN
    • Git
    • 总结
  • Git配置流程及指令
    • 环境配置
    • 获取Git仓库
      • 本地初始化
      • 远程克隆
    • 工作目录、暂存区、版本库
    • 文件的两种状态
    • 本地仓库操作
    • 远程仓库操作
    • Git分支
    • Git标签
    • IntelliJ IDEA使用Git
    • 回滚代码
  • GitHub配置流程
    • SSH是什么
  • 个人使用场景思考
    • vercel是什么?
      • Vercel 的核心功能
      • Vercel 的优势
      • 在 Hexo 项目中的作用
      • 总结
    • 为什么要vercel?相比较其他有什么优缺点?
      • 1. 常见的同类平台
      • 2. 平台对比
      • 3. 各平台特点总结
        • 1. Vercel
        • 2. Netlify
        • 3. GitHub Pages
        • 4. AWS Amplify
        • 5. Cloudflare Pages
      • 4. 选择建议
    • hexo个人静态博客更新部署流程
      • 1. 初始化项目(初次搭建时)
        • 1.1 安装 Hexo 和初始化博客项目
        • 1.2 生成博客内容
        • 1.3 部署到 Vercel
      • 2. 日常更新和部署流程
        • 2.1 创建/更新博客内容
        • 2.2 本地预览
        • 2.3 提交代码到 Git 仓库
        • 2.4 自动触发 Vercel 部署
      • 总结
  • 参考链接


前言

在刚刚结束的NVIDIA面试中,连续被三个面试官拷打,经过了解,具有很强的实用意义。须掌握。
Rating:: 🌟🌟🌟🌟🌟
安装地址:Git
安装教程:Git基本使用教程(一):入门及第一次基本完整操作_git的使用-CSDN博客


Git是什么

Git 是一种 分布式版本控制系统,用来高效地管理代码的修改历史和协作开发。它帮助开发者记录每一次代码的更改,便于回溯历史、恢复代码和多人协作。搭建Git远程仓库可以借助互联网上的代码托管服务来实现,常用的有:GitHub、GitLab、码云

Github是什么?
一个基于 Git面向开源及私有软件项目的托管平台,为开发者提供了管理代码、协作开发和部署项目的工具和环境,因为只支持Git 作为唯一的版本库格式进行托管,故名GitHub

核心概念

Git 的运行机制基于以下几个核心区域:

  1. 工作区(Working Directory)
    • 这是开发者正在实际编辑代码的地方,也就是本地文件系统中的项目文件夹。
    • 你对文件的修改、添加或删除,首先都发生在这里。
  2. 暂存区(Staging Area)
    • 暂存区是一个临时区域,用于存放即将提交到版本库的修改,暂存区允许开发者将代码修改分组,为不同功能生成独立的提交记录,在提交前检查暂存内容,避免将未完成的代码误提交。
    • 当你用 git add 将文件添加到暂存区时,Git 会将这些修改标记为“即将提交”。
    • 这样,你可以选择性地提交部分修改,而不是一次提交所有工作区的变更。
  3. 本地仓库(Local Repository)
    • 本地仓库是你电脑上的一个数据库,存储了所有提交的代码版本和历史。
    • git commit 命令,将暂存区的修改提交到本地仓库,生成一个新的快照。
    • 每次提交都会创建一个独特的提交 ID,方便未来查找和回溯。
  4. 远程仓库(Remote Repository)
    • 远程仓库是托管在云端或服务器上的代码库(如 GitHub、GitLab、Bitbucket)。
    • 通过 git push,你可以将本地仓库的内容上传到远程仓库,方便团队共享代码。

工作流程

Clone:克隆,就是将远程仓库复制到本地
Push:推送,就是将本地仓库代码上传到远程仓库
Pull:拉取,就是将远程仓库代码下载到本地仓库
工作流程如下:
1.从远程仓库中克隆代码到本地仓库
2.从本地仓库中checkout代码然后在工作区进行代码修改
3.在提交前先使用 git add 文件名将代码提交到暂存区 ,如果要暂存所有更改,可以用 git add .
4.使用 git commit -m "提交说明"提交到本地仓库。本地仓库中保存修改的各个历史版本
5.修改完成后,需要和团队成员共享代码时,使用 git push 将本地仓库的内容push到远程仓库
在这里插入图片描述
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具

常见术语解读

  • 版本库(Repository)
    • 存储项目所有的历史记录,包括代码和提交历史。
  • 快照(Snapshot)
    • 每次提交时,Git 会为当前代码生成一个快照,保存文件的状态。
  • 分支(Branch)
    • 分支是代码开发的并行版本,便于开发新功能而不影响主代码。
  • 合并(Merge)
    • 将一个分支的代码合并到另一个分支。
  • 冲突(Conflict)
    • 当不同分支的代码修改同一部分内容时,合并可能产生冲突,需要手动解决。

Git的优势

  • 分布式架构:每个开发者的本地仓库都是完整的版本库。
  • 高效管理代码:可以回溯历史、恢复错误的提交。
  • 轻量分支:创建和切换分支速度快,便于多人协作开发。
  • 离线操作:大部分操作无需联网即可完成。

Git与SVN对比

都是常用的版本控制工具,但是在架构、功能和使用场景上存在显著差异。

SVN

集中式版本控制系统,依赖于中央服务器,开发者从服务器检出代码进行操作,仅在中央服务器上存储完整的历史记录,客户端只保留当前的工作副本。
缺点
1. 服务器单点故障
2. 容错性差

Git

分布式版本控制系统,每个开发者的本地仓库都是完整的版本库,支持离线工作,每个克隆的仓库包含完整的历史记录和所有文件的快照。
分为两种类型的仓库:本地仓库和远程仓库

本地仓库:在开发人员自己电脑上的Git仓库
远程仓库:在远程服务器上的Git仓库

总结

特性GitSVN
架构分布式集中式
离线操作支持不支持
分支管理高效轻量笨重复杂
学习成本较高较低
数据安全更安全依赖服务器
适用场景大型项目、分布式团队小型项目、集中化团队

Git配置流程及指令

环境配置

设置用户名称和email地址,每次Git提交都会使用该用户信息

%% 设置用户信息 %%
git config --global user.name “itcast”  
git config --global user.email “kinggm520@163.com”
%% 查看配置信息 %%
git config --list  
git config user.name

通过上面的命令设置的信息会保存在~/.gitconfig文件中

获取Git仓库

两种方式:

  1. 在本地初始化一个Git仓库
  2. 从远程仓库克隆

本地初始化

  1. 创建空目录作为本地仓库
  2. 打开Git bash
  3. 执行Git init

远程克隆

git clone 地址链接

工作目录、暂存区、版本库

.git文件夹:版本库,存储配置信息、日志信息和文件版本信息
index文件:暂存区,stage,临时保存修改文件的地方
.gitignore文件夹:忽略列表,列出要忽略的文件模式
工作目录:存放.git文件夹的目录,用来存放开发的代码

文件的两种状态

  • untracked 未跟踪(未被纳入版本控制)
  • tracked 已跟踪(被纳入版本控制)
  • Unmodified 未修改状态
  • Modified 已修改状态
  • Staged 已暂存状态
    这些文件的状态会随着我们执行Git的命令发生变化

本地仓库操作

git status  (-s)  %%查看文件状态%%
git add             %%将未跟踪的文件加入暂存区%%
git reset           %%将暂存区的文件取消暂存%%
git commit      %%将暂存区的文件修改提交到本地仓库%%
git rm              %%删除文件%%

远程仓库操作

git remote (-v)                                              %%查看已经配置的远程仓库服务器%%
git remote add < shortname> < url>            %%添加一个新的远程 Git 仓库%%
git clone [url]                                               %%从远程仓库克隆%%
git remote rm                                               %%移除本地无效的远程仓库%%
git fetch                                                       %%从远程仓库获取最新版本到本地仓库,不会自动merge%%
git merge A/B                                              %%merge A/B%%
git pull A B –allow-unrelated-histories /git pull --rebase origin master  %%从远程仓库获取最新版本并merge到本地仓库%%
git branch --set-upstream-to origin/master master   %%将本地分支与远程分支关联%%
git push [remote-name] [branch-name]        %%推送到远程仓库%%

Git分支

git branch  %%列出所有本地分支%%
git branch -r  %%列出所有远程分支%%
git branch -a   %%列出所有本地分支和远程分支%%  
git branch [name]    %%创建分支%%
git checkout [name]    %%切换分支%%
git push [remote_name] [name]     %%推送至远程仓库分支%%
git merge %%合并分支%%
git branch -d/-D [name] %%删除分支%%

Git标签

git tag  %%列出所有tag%%
git show [tag]  %%查看tag信息%%
git tag [tagname]   %%新建一个tag%%  
git push [remote] [tag]    %%将标签推送至远程仓库%%
git checkout -b [branch] [tag]    %%新建一个分支,指向某个tag%%
git tag -d [tag]     %%删除本地tag%%
git push origin :refs/tags/[tag]  %%删除远程tag%%
git branch -d/-D [name] %%删除分支%%

IntelliJ IDEA使用Git

超详细的Git使用教程(图文)-CSDN博客

回滚代码

Git回滚远程仓库代码_git 远程代码仓回滚‘-CSDN博客


GitHub配置流程

  1. 注册账号
  2. 建立本地仓库 git init
  3. 生成SSH
git config --global user.name "注册名"
git config --global user.email "注册邮箱"
ssh-keygen -t rsa -C "自己的邮箱"
  1. Github使用SSH建立远程仓库连接测试
  2. 测试SSH连接
ssh -T git@github.com
  1. 推送本地文件到远程
git add .
git commit
git push

SSH是什么

Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置。


个人使用场景思考

vercel是什么?

Vercel 是一个用于部署静态网站和前端应用的 云平台,以其简单、高效、快速的特点被广泛用于静态博客、单页应用(SPA)和服务器端渲染(SSR)项目。

Vercel 的核心功能

  1. 快速部署
    • 支持通过命令行工具或直接从 GitHub、GitLab、Bitbucket 等代码托管平台自动部署项目。
    • 提交代码后,Vercel 会自动构建并上线,无需手动操作。
  2. 全球加速
    • Vercel 提供 全球内容分发网络 (CDN),让你的站点能在世界各地快速加载。
    • 自动处理静态资源缓存和优化。
  3. 自动化工作流
    • 提供自动化的 CI/CD 流程,每次代码变更都会触发重新构建和部署。
    • 支持预览功能,可以为每次 Pull Request 生成独立的预览链接。
  4. 支持多种框架
    • Vercel 原生支持常见的前端框架,如 Next.js(Vercel 的核心产品)、React、Vue.js、Svelte,以及 Hexo、Hugo 等静态网站生成器。
  5. 无服务器功能
    • 支持 Serverless Functions,允许你在不管理服务器的情况下添加动态功能。

Vercel 的优势

  1. 简单易用:用户只需关联代码仓库即可完成部署,极大降低了部署门槛。
  2. 性能优化:自动进行图片优化、缓存管理、CDN 分发等,提升网站速度。
  3. 成本友好:免费套餐适合个人开发者,提供充足的带宽和功能。
  4. 团队协作:支持多人协作开发,便于预览和审核代码变更。
  5. 即时预览:为每次代码提交生成预览地址,便于测试和分享。

在 Hexo 项目中的作用

在使用 Hexo 搭建个人博客时,Vercel 主要用于:

  1. 部署静态博客:将 Hexo 生成的静态文件上传到 Vercel,快速上线。
  2. 持续集成:每次更新博客内容,只需更新代码,Vercel 自动重新部署。
  3. 全球加速:通过 Vercel 的 CDN 网络,确保博客访问速度快且稳定。

总结

Vercel 是一个强大的部署工具,专注于简化前端项目的部署和优化。对于像 Hexo 这样的静态博客,它能快速构建和上线,同时提供流畅的自动化体验,让个人开发者更专注于内容创作而非部署过程。

为什么要vercel?相比较其他有什么优缺点?

除了 Vercel,还有其他常用的同类型静态网站和前端应用托管平台。以下是一些常见的选项及它们与 Vercel 的对比:

1. 常见的同类平台

  1. Netlify
  2. GitHub Pages
  3. AWS Amplify
  4. Cloudflare Pages
  5. Render

2. 平台对比

特性VercelNetlifyGitHub PagesAWS AmplifyCloudflare Pages
核心定位专注前端项目和静态网站部署,优化 Next.js 支持静态网站和 Jamstack 应用的全栈解决方案静态网页托管,简化 GitHub 仓库发布流程全栈支持,结合 AWS 服务构建复杂应用CDN 驱动的静态网站托管
构建与部署自动化,原生支持多框架(Next.js、React、Hexo等)自动化,支持多框架,提供丰富的插件和自定义构建手动或通过 Actions 部署,需要提前生成静态文件自动化,支持全栈和复杂构建任务自动化,针对静态文件优化
集成方式支持 GitHub、GitLab、Bitbucket支持 GitHub、GitLab、Bitbucket仅支持 GitHub支持 GitHub、GitLab支持 GitHub
全球加速 (CDN)全球 CDN,延迟低,专为前端优化全球 CDN,Netlify Edge 提供智能路由CDN 加速效果有限AWS CloudFront 支持,适合大型项目基于 Cloudflare 的全球 CDN,性能优越
免费套餐免费计划强大:支持团队协作、预览部署,带宽限制宽松免费计划强大:支持插件、API 调用,带宽限制 125GB/月免费:托管基础静态文件,适合简单个人项目免费计划较基础:支持 5GB 存储和 1GB 构建缓存免费计划强大:不限带宽,Cloudflare 网络性能最佳
动态功能支持Serverless Functions 和 API 路由Functions(支持边缘函数)无动态功能强大的 Lambda、API Gateway 集成Workers Functions 提供高效的动态处理
开发者体验易用,专为前端开发优化,支持高级功能(如 ISR、SSR)易用,支持直观 UI 和丰富插件简单但功能有限强大但需要熟悉 AWS 生态易用,开发者友好
适用场景单页应用、Next.js 项目、大型静态博客Jamstack 网站、小型 Web 应用静态个人网站、小型博客企业级应用、复杂全栈项目静态博客、企业网站、需要高性能的前端项目

3. 各平台特点总结

1. Vercel
  • 优点
    • 深度集成 Next.js,支持静态生成 (SSG)、增量静态生成 (ISR)、服务器端渲染 (SSR)。
    • 全球加速,构建速度快,开发者友好。
    • 强大的自动化工作流,适合团队协作和持续集成。
  • 缺点
    • 偏重前端项目,后端服务功能相对基础。
2. Netlify
  • 优点
    • 丰富插件生态(Netlify Plugins)扩展部署功能。
    • 支持边缘计算 (Edge Functions),适合 Jamstack 应用。
    • 免费套餐较大方,适合中小型项目。
  • 缺点
    • 对 SSR 支持不如 Vercel 出色,重点偏向静态内容。
3. GitHub Pages
  • 优点
    • 完全免费,适合托管简单的静态博客和文档。
    • 直接与 GitHub 仓库集成,无需额外配置。
  • 缺点
    • 功能有限,不支持动态功能。
    • 没有自动化 CI/CD 流程,依赖手动生成静态文件。
4. AWS Amplify
  • 优点
    • 与 AWS 服务深度集成,支持全栈开发(前端+后端)。
    • 高性能,适合需要动态 API 和复杂功能的项目。
  • 缺点
    • 学习曲线陡峭,需要熟悉 AWS 生态。
    • 免费计划限制较多,可能适合企业级项目。
5. Cloudflare Pages
  • 优点
    • 依托 Cloudflare 的全球 CDN,性能极佳。
    • 免费计划不限带宽,非常适合高流量网站。
    • 支持动态 Workers Functions,易于添加动态功能。
  • 缺点
    • 主要针对静态内容,对于复杂项目支持较弱。

4. 选择建议

  • 个人博客或小型网站
    • 推荐 Vercel(功能强大、易用)或 Netlify(免费带宽充足)。
    • 如果项目非常简单,GitHub Pages 是免费又稳定的选择。
  • 企业项目或复杂全栈应用
    • 推荐 AWS Amplify(全面支持前后端)。
    • 如果需要极致性能和全球加速,Cloudflare Pages 是理想选择。
  • 专注前端开发、使用 Next.js
    • Vercel 是首选。
      通过对比可以看出,选择哪个平台主要取决于你的项目需求、动态功能支持程度以及团队规模。对于大多数前端开发者,VercelNetlify 是最友好的选择,而对性能要求高的可以考虑 Cloudflare Pages

hexo个人静态博客更新部署流程

使用 HexoVercel 搭建的个人博客更新上传部署流程通常如下:

1. 初始化项目(初次搭建时)

1.1 安装 Hexo 和初始化博客项目
npm install -g hexo-cli
hexo init my-blog
cd my-blog
npm install
  • 初始化完成后,你的博客项目结构会被创建。
1.2 生成博客内容
  • 使用 Hexo 的命令生成静态页面:
hexo generate
  • 生成的文件会出现在 public/ 文件夹中。
1.3 部署到 Vercel
  1. 创建 Git 仓库:
    • 将博客项目托管到 GitHub/GitLab/Bitbucket 等平台。
    git init
    git add .
    git commit -m "Initial commit"
    git branch -M main
    git remote add origin <你的仓库地址>
    git push -u origin main
    
  2. 连接 Vercel:
    • 登录 Vercel 官方网站。
    • 点击 “New Project”,关联你的 Git 仓库。
    • 在项目设置中,选择:
      • Framework Preset:Hexo。
      • Build Commandhexo generate
      • Output Directorypublic
    • 点击部署,Vercel 会自动构建并上线你的博客。

2. 日常更新和部署流程

2.1 创建/更新博客内容
  1. 新增文章
    • 使用 Hexo 的命令创建新文章:
      hexo new "My New Post"
      
    • 打开 source/_posts 目录下的 Markdown 文件,编辑内容。
  2. 更新配置或资源
    • 修改 _config.yml 文件以调整博客设置。
    • 添加图片、CSS 等资源文件到 source/ 目录。
2.2 本地预览
  • 在提交修改前,可以在本地启动 Hexo 服务器预览博客:
hexo server
  • 在浏览器访问 http://localhost:4000 查看效果。
2.3 提交代码到 Git 仓库
  1. 生成静态页面:
    hexo generate
    
  2. 提交更新到 Git 仓库:
    git add .
    git commit -m "Update blog content"
    git push origin main
    
2.4 自动触发 Vercel 部署
  • 每次推送到远程仓库后,Vercel 会自动触发构建流程:
    • Vercel 拉取最新代码。
    • 执行 hexo generate
    • 将生成的静态文件部署到全球 CDN 网络。

总结

完整的 Hexo + Vercel 博客更新和部署流程如下:

  1. 在本地创建或编辑文章,使用 hexo generate 生成静态文件
  2. 推送代码到 Git 仓库
  3. Vercel 自动拉取代码并部署更新
  4. 访问博客,查看最新内容

简单的来说,vercel就是在你完成 Git 仓库的更新后,通过自动化流程拉取最新的代码,并构建、部署到全球的内容分发网络 (CDN) 上,让你的博客或网站实时更新并上线。


参考链接

超详细的Git使用教程(图文)-CSDN博客
SSH简介及两种远程登录的方法-CSDN博客
GPT


http://www.ppmy.cn/devtools/134923.html

相关文章

StarRocks Summit Asia 2024 全部议程公布!

随着企业数字化转型深入&#xff0c;云原生架构正成为湖仓部署的新标准。弹性扩展、资源隔离、成本优化&#xff0c;帮助企业在云上获得了更高的灵活性和效率。与此同时&#xff0c;云原生架构也为湖仓与 AI 的深度融合奠定了基础。 在过去一年&#xff0c;湖仓技术与 AI 的结…

ssm105基于JAVAEE技术校园车辆管理系统+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;校园车辆管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本校园车辆管理系统…

【论文解读CVPR2024】Scaffold-GS: Structured 3D Gaussians for View-Adaptive Rendering

论文&#xff1a;https://arxiv.org/abs/2312.00109https://arxiv.org/abs/2312.00109 代码&#xff1a;https://city-super.github.io/scaffold-gs/https://city-super.github.io/scaffold-gs/ Overview TL;DR: 我们提出了 Scaffold-GS&#xff0c;它利用锚点分布局部的 3D …

Matlab深度学习(一)——如何构建一个卷积神经网络

1.1 CNN的核心 —— 卷积 我们以二维滑动卷积着重说明。与我们的滑动窗异常值检测类似&#xff0c;但滑动卷积涉及三个矩阵&#xff1a;第一个矩阵通常尺寸大且固定不动&#xff0c;在这称之为“输入矩阵”&#xff1b;第二个矩阵尺寸小&#xff0c;在输入矩阵上以从左到右&…

antdesign对话框输出html格式

antdesign对话框this. i n f o 、 t h i s . info、this. info、this.success、 this. e r r o r 、 t h i s . error、this. error、this.warning、this.KaTeX parse error: Expected }, got EOF at end of input: … this.message.success(‘文件上传成功’) this.handleReLo…

flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例

flutter字体大小切换案例 小字体&#xff0c;标准字体&#xff0c;大字体&#xff0c;超大字体案例 Android iOS设备带有选择记录 我的flutter项目版本 environment: sdk: ‘>3.4.4 <4.0.0’ 图片案例 pubspec.yaml 添加依赖 # 屏幕尺寸适配 https://github.com/OpenF…

Argo workflow 拉取git 并使用pvc共享文件

文章目录 拉取 Git 仓库并读取文件使用 Kubernetes Persistent Volumes&#xff08;通过 volumeClaimTemplates&#xff09;以及任务之间如何共享数据 拉取 Git 仓库并读取文件 在 Argo Workflows 中&#xff0c;如果你想要一个任务拉取 Git 仓库中的文件&#xff0c;另一个任…

OpenCV自学系列(2)——核心操作(core operations)

OpenCV官网指导教程第二期&#xff0c;对应官网的 core operation。 主要包括三大类&#xff1a; 1、图像基本操作 2、图像的算术操作 3、&#xff08;代码&#xff09;表现的测量和提高 主要使用到的方法如下&#xff1a; cv2.cvtColor() cv2.split() cv2.merge() cv2.copy…