Git_2024/11/16
文章目录
前言
在刚刚结束的NVIDIA面试中,连续被三个面试官拷打,经过了解,具有很强的实用意义。须掌握。
Rating:: 🌟🌟🌟🌟🌟
安装地址:Git
安装教程:Git基本使用教程(一):入门及第一次基本完整操作_git的使用-CSDN博客
Git是什么
Git 是一种 分布式版本控制系统,用来高效地管理代码的修改历史和协作开发。它帮助开发者记录每一次代码的更改,便于回溯历史、恢复代码和多人协作。搭建Git远程仓库可以借助互联网上的代码托管服务来实现,常用的有:GitHub、GitLab、码云
Github是什么?
一个基于 Git面向开源及私有软件项目的托管平台,为开发者提供了管理代码、协作开发和部署项目的工具和环境,因为只支持Git 作为唯一的版本库格式进行托管,故名GitHub
核心概念
Git 的运行机制基于以下几个核心区域:
- 工作区(Working Directory)
- 这是开发者正在实际编辑代码的地方,也就是本地文件系统中的项目文件夹。
- 你对文件的修改、添加或删除,首先都发生在这里。
- 暂存区(Staging Area)
- 暂存区是一个临时区域,用于存放即将提交到版本库的修改,暂存区允许开发者将代码修改分组,为不同功能生成独立的提交记录,在提交前检查暂存内容,避免将未完成的代码误提交。
- 当你用
git add
将文件添加到暂存区时,Git 会将这些修改标记为“即将提交”。 - 这样,你可以选择性地提交部分修改,而不是一次提交所有工作区的变更。
- 本地仓库(Local Repository)
- 本地仓库是你电脑上的一个数据库,存储了所有提交的代码版本和历史。
- 用
git commit
命令,将暂存区的修改提交到本地仓库,生成一个新的快照。 - 每次提交都会创建一个独特的提交 ID,方便未来查找和回溯。
- 远程仓库(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仓库
总结
特性 | Git | SVN |
---|---|---|
架构 | 分布式 | 集中式 |
离线操作 | 支持 | 不支持 |
分支管理 | 高效轻量 | 笨重复杂 |
学习成本 | 较高 | 较低 |
数据安全 | 更安全 | 依赖服务器 |
适用场景 | 大型项目、分布式团队 | 小型项目、集中化团队 |
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仓库
两种方式:
- 在本地初始化一个Git仓库
- 从远程仓库克隆
本地初始化
- 创建空目录作为本地仓库
- 打开Git bash
- 执行
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回滚远程仓库代码_git 远程代码仓回滚‘-CSDN博客
GitHub配置流程
- 注册账号
- 建立本地仓库 git init
- 生成SSH
git config --global user.name "注册名"
git config --global user.email "注册邮箱"
ssh-keygen -t rsa -C "自己的邮箱"
- Github使用SSH建立远程仓库连接测试
- 测试SSH连接
ssh -T git@github.com
- 推送本地文件到远程
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 的核心功能
- 快速部署
- 支持通过命令行工具或直接从 GitHub、GitLab、Bitbucket 等代码托管平台自动部署项目。
- 提交代码后,Vercel 会自动构建并上线,无需手动操作。
- 全球加速
- Vercel 提供 全球内容分发网络 (CDN),让你的站点能在世界各地快速加载。
- 自动处理静态资源缓存和优化。
- 自动化工作流
- 提供自动化的 CI/CD 流程,每次代码变更都会触发重新构建和部署。
- 支持预览功能,可以为每次 Pull Request 生成独立的预览链接。
- 支持多种框架
- Vercel 原生支持常见的前端框架,如 Next.js(Vercel 的核心产品)、React、Vue.js、Svelte,以及 Hexo、Hugo 等静态网站生成器。
- 无服务器功能
- 支持 Serverless Functions,允许你在不管理服务器的情况下添加动态功能。
Vercel 的优势
- 简单易用:用户只需关联代码仓库即可完成部署,极大降低了部署门槛。
- 性能优化:自动进行图片优化、缓存管理、CDN 分发等,提升网站速度。
- 成本友好:免费套餐适合个人开发者,提供充足的带宽和功能。
- 团队协作:支持多人协作开发,便于预览和审核代码变更。
- 即时预览:为每次代码提交生成预览地址,便于测试和分享。
在 Hexo 项目中的作用
在使用 Hexo 搭建个人博客时,Vercel 主要用于:
- 部署静态博客:将 Hexo 生成的静态文件上传到 Vercel,快速上线。
- 持续集成:每次更新博客内容,只需更新代码,Vercel 自动重新部署。
- 全球加速:通过 Vercel 的 CDN 网络,确保博客访问速度快且稳定。
总结
Vercel 是一个强大的部署工具,专注于简化前端项目的部署和优化。对于像 Hexo 这样的静态博客,它能快速构建和上线,同时提供流畅的自动化体验,让个人开发者更专注于内容创作而非部署过程。
为什么要vercel?相比较其他有什么优缺点?
除了 Vercel,还有其他常用的同类型静态网站和前端应用托管平台。以下是一些常见的选项及它们与 Vercel 的对比:
1. 常见的同类平台
- Netlify
- GitHub Pages
- AWS Amplify
- Cloudflare Pages
- Render
2. 平台对比
特性 | Vercel | Netlify | GitHub Pages | AWS Amplify | Cloudflare 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 是首选。
通过对比可以看出,选择哪个平台主要取决于你的项目需求、动态功能支持程度以及团队规模。对于大多数前端开发者,Vercel 和 Netlify 是最友好的选择,而对性能要求高的可以考虑 Cloudflare Pages。
- Vercel 是首选。
hexo个人静态博客更新部署流程
使用 Hexo 和 Vercel 搭建的个人博客更新上传部署流程通常如下:
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
- 创建 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
- 连接 Vercel:
- 登录 Vercel 官方网站。
- 点击 “New Project”,关联你的 Git 仓库。
- 在项目设置中,选择:
- Framework Preset:Hexo。
- Build Command:
hexo generate
。 - Output Directory:
public
。
- 点击部署,Vercel 会自动构建并上线你的博客。
2. 日常更新和部署流程
2.1 创建/更新博客内容
- 新增文章:
- 使用 Hexo 的命令创建新文章:
hexo new "My New Post"
- 打开
source/_posts
目录下的 Markdown 文件,编辑内容。
- 使用 Hexo 的命令创建新文章:
- 更新配置或资源:
- 修改
_config.yml
文件以调整博客设置。 - 添加图片、CSS 等资源文件到
source/
目录。
- 修改
2.2 本地预览
- 在提交修改前,可以在本地启动 Hexo 服务器预览博客:
hexo server
- 在浏览器访问
http://localhost:4000
查看效果。
2.3 提交代码到 Git 仓库
- 生成静态页面:
hexo generate
- 提交更新到 Git 仓库:
git add . git commit -m "Update blog content" git push origin main
2.4 自动触发 Vercel 部署
- 每次推送到远程仓库后,Vercel 会自动触发构建流程:
- Vercel 拉取最新代码。
- 执行
hexo generate
。 - 将生成的静态文件部署到全球 CDN 网络。
总结
完整的 Hexo + Vercel 博客更新和部署流程如下:
- 在本地创建或编辑文章,使用
hexo generate
生成静态文件。 - 推送代码到 Git 仓库。
- Vercel 自动拉取代码并部署更新。
- 访问博客,查看最新内容。
简单的来说,vercel就是在你完成 Git 仓库的更新后,通过自动化流程拉取最新的代码,并构建、部署到全球的内容分发网络 (CDN) 上,让你的博客或网站实时更新并上线。
参考链接
超详细的Git使用教程(图文)-CSDN博客
SSH简介及两种远程登录的方法-CSDN博客
GPT
原文地址:https://blog.csdn.net/qq_46562662/article/details/143820503
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!