当前位置: 首页 > article >正文

Git 使用大全:从入门到精通

在这里插入图片描述

Git 是目前最流行的分布式版本控制系统,被广泛应用于软件开发中。本文将全面介绍 Git 的各种功能和使用方法,包含大量代码示例和实践建议。

文章目录

    • Git 基础概念
      • 版本控制系统
      • Git 的特点
      • Git 的三个区域
      • Git 文件状态
    • Git 安装与配置
      • 安装 Git
        • Linux
        • macOS
        • Windows
      • 初始配置
    • Git 仓库创建与管理
      • 初始化新仓库
      • 克隆现有仓库
      • 查看仓库状态
      • 忽略文件
    • Git 基本工作流程
      • 添加文件到暂存区
      • 提交更改
      • 查看提交历史
      • 比较差异
    • Git 分支管理
      • 创建与切换分支
      • 合并分支
      • 解决冲突
      • 变基 (Rebase)
    • Git 远程仓库操作
      • 查看远程仓库
      • 添加/移除远程仓库
      • 获取与拉取
      • 推送
    • Git 撤销与回退
      • 撤销工作目录修改
      • 撤销暂存区修改
      • 修改最后一次提交
      • 回退提交
      • 恢复删除的文件
    • Git 标签管理
      • 创建标签
      • 查看标签
      • 推送标签
      • 删除标签
      • 检出标签
    • Git 高级操作
      • 储藏更改
      • 二分查找
      • 子模块
      • 重写历史
      • 打包与归档
    • Git 协作工作流
      • 集中式工作流
      • 功能分支工作流
      • Git Flow
      • Forking 工作流
    • Git 问题排查
      • 查看文件修改历史
      • 查找问题提交
      • 恢复丢失的提交
      • 清理仓库
    • Git 最佳实践
      • 提交规范
      • 分支命名规范
      • 工作流程建议
      • 大型项目建议
      • 安全性建议
    • 总结

在这里插入图片描述

Git 基础概念

版本控制系统

版本控制系统 (Version Control System, VCS) 是记录文件内容变化,以便将来查阅特定版本修订情况的系统。

Git 的特点

  1. 分布式:每个开发者都有完整的仓库副本
  2. 高效:大部分操作在本地完成
  3. 完整性:使用 SHA-1 哈希保证数据完整性
  4. 灵活性:支持多种非线性开发流程

Git 的三个区域

  1. 工作目录 (Working Directory):实际文件所在目录
  2. 暂存区 (Staging Area):准备提交的文件快照
  3. Git 仓库 (Repository):永久存储的文件快照

Git 文件状态

  1. 未跟踪 (Untracked):新文件,未被 Git 管理
  2. 已修改 (Modified):文件已修改但未暂存
  3. 已暂存 (Staged):文件已修改并标记为下次提交
  4. 已提交 (Committed):文件已安全保存在本地数据库

Git 安装与配置

安装 Git

Linux
# Debian/Ubuntu
sudo apt-get install git# Fedora
sudo dnf install git# CentOS
sudo yum install git
macOS
# 使用 Homebrew
brew install git# 或下载官方安装包
https://git-scm.com/download/mac
Windows

下载 Git for Windows: https://git-scm.com/download/win

初始配置

配置用户信息:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

配置默认编辑器:

git config --global core.editor "vim"

查看配置:

git config --list

常用别名配置:

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'

Git 仓库创建与管理

初始化新仓库

mkdir my-project
cd my-project
git init

克隆现有仓库

git clone https://github.com/user/repo.git
git clone https://github.com/user/repo.git my-local-folder  # 指定本地目录名
git clone --depth 1 https://github.com/user/repo.git  # 浅克隆,只获取最新版本

查看仓库状态

git status
git status -s  # 简洁输出

忽略文件

创建 .gitignore 文件:

# 忽略所有 .a 文件
*.a# 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a# 忽略当前目录下的 TODO 文件
/TODO# 忽略 build/ 目录下的所有文件
build/# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt# 忽略 doc/ 目录下所有 .pdf 文件
doc/**/*.pdf# 忽略所有 .log 文件
*.log# 忽略 node_modules 目录
node_modules/# 忽略 .env 环境文件
.env

Git 基本工作流程

添加文件到暂存区

git add file1.txt  # 添加单个文件
git add file2.txt file3.txt  # 添加多个文件
git add .  # 添加所有修改和新文件
git add -A  # 添加所有修改、新文件和删除操作
git add -u  # 添加所有修改和删除,但不包括新文件
git add -p  # 交互式添加

提交更改

git commit -m "Initial commit"  # 简单提交
git commit -a -m "Commit all changes"  # 跳过暂存区,直接提交所有已跟踪文件的修改
git commit --amend  # 修改最后一次提交
git commit --amend --no-edit  # 修改最后一次提交但不修改提交信息

查看提交历史

git log
git log -p  # 显示每次提交的内容差异
git log -2  # 显示最近2次提交
git log --stat  # 显示简略统计信息
git log --pretty=oneline  # 单行显示
git log --pretty=format:"%h - %an, %ar : %s"
git log --since=2.weeks  # 显示两周内的提交
git log --author="John"  # 按作者筛选
git log --grep="bug fix"  # 按提交信息筛选
git log -S"function_name"  # 按代码内容筛选
git log -- path/to/file  # 查看特定文件的修改历史
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit  # 漂亮的图形化输出

比较差异

git diff  # 工作目录与暂存区的差异
git diff --staged  # 暂存区与最后一次提交的差异
git diff HEAD  # 工作目录与最后一次提交的差异
git diff branch1..branch2  # 两个分支间的差异
git diff commit1 commit2  # 两次提交间的差异
git diff --name-only commit1 commit2  # 只显示有差异的文件名
git diff --word-diff  # 单词级别的差异

Git 分支管理

创建与切换分支

git branch  # 查看本地分支
git branch -a  # 查看所有分支(包括远程)
git branch new-branch  # 创建新分支
git checkout branch-name  # 切换分支
git checkout -b new-branch  # 创建并切换到新分支
git checkout -b new-branch origin/remote-branch  # 基于远程分支创建本地分支
git branch -d branch-name  # 删除已合并的分支
git branch -D branch-name  # 强制删除分支
git branch -m old-name new-name  # 重命名分支
git branch --merged  # 查看已合并到当前分支的分支
git branch --no-merged  # 查看未合并到当前分支的分支

合并分支

git merge branch-name  # 合并指定分支到当前分支
git merge --no-ff branch-name  # 禁用快进合并
git merge --squash branch-name  # 压缩合并
git merge --abort  # 中止合并

解决冲突

当合并发生冲突时,Git 会在冲突文件中标记冲突部分:

<<<<<<< HEAD
当前分支的内容
=======
要合并的分支的内容
>>>>>>> branch-name

手动解决冲突后:

git add resolved-file.txt
git commit

变基 (Rebase)

git rebase branch-name  # 将当前分支变基到指定分支
git rebase --continue  # 解决冲突后继续变基
git rebase --abort  # 中止变基
git rebase -i HEAD~3  # 交互式变基,修改最近3次提交

交互式变基常用操作:

  • pick: 使用提交
  • reword: 使用提交但修改提交信息
  • edit: 使用提交但暂停修改
  • squash: 将提交合并到前一个提交
  • fixup: 类似 squash 但丢弃提交信息
  • drop: 删除提交

Git 远程仓库操作

查看远程仓库

git remote  # 列出远程仓库
git remote -v  # 显示远程仓库URL
git remote show origin  # 显示远程仓库详细信息

添加/移除远程仓库

git remote add origin https://github.com/user/repo.git  # 添加远程仓库
git remote rename origin new-name  # 重命名远程仓库
git remote remove origin  # 移除远程仓库
git remote set-url origin https://github.com/user/new-repo.git  # 修改远程仓库URL

获取与拉取

git fetch origin  # 从远程获取最新信息但不合并
git fetch --prune  # 清理已不存在的远程分支的本地引用
git pull origin master  # 获取并合并远程分支
git pull --rebase  # 使用变基方式拉取

推送

git push origin master  # 推送本地分支到远程
git push -u origin master  # 推送并设置上游分支
git push origin --delete branch-name  # 删除远程分支
git push origin --tags  # 推送所有标签
git push origin HEAD  # 推送当前分支
git push --force  # 强制推送(慎用)
git push --force-with-lease  # 更安全的强制推送

Git 撤销与回退

撤销工作目录修改

git checkout -- file.txt  # 撤销工作目录中文件的修改
git checkout -- .  # 撤销所有工作目录修改

撤销暂存区修改

git reset HEAD file.txt  # 将文件从暂存区移出
git reset HEAD .  # 将所有文件从暂存区移出

修改最后一次提交

git commit --amend  # 修改提交信息或内容
git commit --amend --no-edit  # 修改提交内容但不修改信息

回退提交

git reset --soft HEAD~1  # 回退提交但保留修改在暂存区
git reset --mixed HEAD~1  # 回退提交并保留修改在工作目录(默认)
git reset --hard HEAD~1  # 彻底回退提交,丢弃所有修改
git revert HEAD  # 创建新提交来撤销之前的提交

恢复删除的文件

git checkout HEAD -- deleted-file.txt  # 恢复已删除的文件
git checkout $(git rev-list -n 1 HEAD -- deleted-file.txt)^ -- deleted-file.txt  # 恢复在之前提交中删除的文件

Git 标签管理

创建标签

git tag v1.0  # 轻量标签
git tag -a v1.0 -m "Version 1.0"  # 附注标签
git tag -a v1.0 9fceb02  # 给特定提交打标签
git tag -s v1.0 -m "Signed version 1.0"  # 签名标签

查看标签

git tag  # 列出所有标签
git show v1.0  # 查看标签详情
git tag -l "v1.*"  # 过滤标签

推送标签

git push origin v1.0  # 推送单个标签
git push origin --tags  # 推送所有标签

删除标签

git tag -d v1.0  # 删除本地标签
git push origin --delete v1.0  # 删除远程标签
git push origin :refs/tags/v1.0  # 另一种删除远程标签的方式

检出标签

git checkout v1.0  # 检出标签(进入分离头指针状态)
git checkout -b version1 v1.0  # 基于标签创建新分支

Git 高级操作

储藏更改

git stash  # 储藏当前工作目录和暂存区的修改
git stash save "message"  # 带消息的储藏
git stash list  # 列出所有储藏
git stash apply  # 应用最近的储藏
git stash apply stash@{1}  # 应用特定储藏
git stash pop  # 应用并移除最近的储藏
git stash drop stash@{1}  # 删除特定储藏
git stash clear  # 清除所有储藏
git stash branch new-branch  # 从储藏创建新分支
git stash -u  # 储藏包括未跟踪文件
git stash -a  # 储藏包括所有文件(包括.gitignore忽略的)

二分查找

git bisect start  # 开始二分查找
git bisect bad  # 当前版本有问题
git bisect good v1.0  # v1.0版本是好的
git bisect reset  # 结束二分查找
git bisect run test-script.sh  # 自动运行测试脚本进行二分查找

子模块

git submodule add https://github.com/user/repo.git path/to/submodule  # 添加子模块
git submodule init  # 初始化子模块
git submodule update  # 更新子模块
git submodule update --init --recursive  # 递归初始化并更新所有子模块
git submodule foreach 'git checkout master'  # 对所有子模块执行命令
git clone --recurse-submodules https://github.com/user/repo.git  # 克隆包含子模块的仓库

重写历史

git filter-branch --tree-filter 'rm -f passwords.txt' HEAD  # 从所有提交中删除文件
git filter-branch --commit-filter 'if [ "$GIT_AUTHOR_EMAIL" = "old@email.com" ];thenGIT_AUTHOR_NAME="New Name";GIT_AUTHOR_EMAIL="new@email.com";git commit-tree "$@";elsegit commit-tree "$@";fi' HEAD  # 修改作者信息

注意:重写历史会改变提交哈希,只适用于尚未共享的提交。

打包与归档

git bundle create repo.bundle HEAD master  # 创建包含master分支的bundle文件
git clone repo.bundle repo -b master  # 从bundle文件克隆
git archive --format=zip HEAD > archive.zip  # 创建当前提交的zip归档
git archive --format=tar --prefix=project/ HEAD | gzip > project.tar.gz  # 创建带前缀的tar.gz归档

Git 协作工作流

集中式工作流

  1. 开发者克隆中央仓库
  2. 在本地提交更改
  3. 推送更改到中央仓库
  4. 解决冲突(如果有)

功能分支工作流

  1. 为每个新功能创建独立分支
  2. 在功能分支上开发
  3. 完成后合并到主分支
  4. 删除功能分支
git checkout -b new-feature
# 开发功能...
git commit -a -m "Implement new feature"
git checkout master
git merge new-feature
git branch -d new-feature

Git Flow

Git Flow 是一种流行的分支模型,定义严格的分支角色和交互方式。

主要分支:

  • master: 生产代码
  • develop: 集成开发分支

支持分支:

  • feature/*: 功能开发分支
  • release/*: 准备发布分支
  • hotfix/*: 紧急修复分支
# 初始化Git Flow
git flow init# 开始新功能
git flow feature start myfeature# 完成功能
git flow feature finish myfeature# 发布新版本
git flow release start 1.0.0
git flow release finish 1.0.0# 紧急修复
git flow hotfix start 1.0.1
git flow hotfix finish 1.0.1

Forking 工作流

  1. 开发者fork中央仓库
  2. 克隆自己的fork到本地
  3. 创建功能分支开发
  4. 推送更改到自己的fork
  5. 创建Pull Request请求合并到中央仓库
# 克隆fork的仓库
git clone https://github.com/yourname/repo.git# 添加上游仓库
git remote add upstream https://github.com/original/repo.git# 获取上游更改
git fetch upstream
git merge upstream/master# 创建功能分支
git checkout -b new-feature# 开发完成后推送到自己的fork
git push origin new-feature# 然后在GitHub上创建Pull Request

Git 问题排查

查看文件修改历史

git blame file.txt  # 查看文件的逐行修改历史
git blame -L 10,20 file.txt  # 查看特定行的修改历史
git log -p file.txt  # 查看文件的完整修改历史
git show commit-id:file.txt  # 查看特定提交中的文件内容

查找问题提交

git bisect start  # 开始二分查找
git bisect bad  # 标记当前版本有问题
git bisect good v1.0  # 标记v1.0版本是好的
# Git会自动检出中间版本,你测试后标记good或bad
git bisect reset  # 结束二分查找

恢复丢失的提交

git reflog  # 查看所有HEAD指向的历史
git fsck --lost-found  # 查找悬空对象
git show commit-id  # 检查找到的提交
git merge commit-id  # 恢复丢失的提交

清理仓库

git gc  # 清理不必要的文件并优化本地仓库
git clean -n  # 显示将被删除的未跟踪文件(干跑)
git clean -f  # 删除未跟踪文件
git clean -fd  # 删除未跟踪文件和目录
git prune  # 删除悬空对象

Git 最佳实践

提交规范

  1. 提交信息应清晰描述修改内容
  2. 第一行不超过50字符,作为摘要
  3. 第二行空行
  4. 第三行开始详细说明(如有必要)
  5. 使用现在时态、命令语气(如"Fix bug"而非"Fixed bug")

示例:

Summarize changes in around 50 characters or lessMore detailed explanatory text, if necessary. Wrap it to about 72
characters or so. In some contexts, the first line is treated as the
subject of the commit and the rest of the text as the body. The
blank line separating the summary from the body is critical (unless
you omit the body entirely); various tools like `log`, `shortlog`
and `rebase` can get confused if you run the two together.Explain the problem that this commit is solving. Focus on why you
are making this change as opposed to how (the code explains that).
Are there side effects or other unintuitive consequences of this
change? Here's the place to explain them.Further paragraphs come after blank lines.- Bullet points are okay, too- Typically a hyphen or asterisk is used for the bullet, precededby a single space, with blank lines in between, but conventionsvary here

分支命名规范

  1. feature/*: 新功能开发
  2. bugfix/*: 错误修复
  3. hotfix/*: 紧急修复
  4. release/*: 版本发布准备
  5. docs/*: 文档更新
  6. test/*: 测试相关

工作流程建议

  1. 频繁提交,原子性提交(每个提交只做一件事)
  2. 在推送前整理本地提交历史
  3. 使用分支进行功能开发和问题修复
  4. 定期从上游拉取更改
  5. 使用Pull Request进行代码审查

大型项目建议

  1. 使用子模块或子树管理依赖
  2. 使用浅克隆减少下载量
  3. 使用稀疏检出只获取需要的文件
  4. 使用Git LFS管理大文件
# 浅克隆
git clone --depth 1 https://github.com/user/repo.git# 稀疏检出
git init repo
cd repo
git remote add origin https://github.com/user/repo.git
git config core.sparseCheckout true
echo "some/dir/" >> .git/info/sparse-checkout
git pull origin master

安全性建议

  1. 不要提交敏感信息(密码、密钥等)
  2. 使用.gitignore忽略不必要的文件
  3. 定期检查提交历史中的敏感信息
  4. 必要时重写历史删除敏感信息
# 检查历史中是否包含敏感信息
git log -p | grep "password"

总结

Git 是一个功能强大且灵活的工具,掌握它可以极大提高开发效率。本文涵盖了 Git 的各个方面,从基础操作到高级技巧,从个人使用到团队协作。建议读者在实际项目中多加练习,逐步掌握 Git 的各种功能。

记住,Git 的核心概念是快照而非差异,理解这一点有助于更好地使用 Git。同时,遵循最佳实践可以使版本控制更加高效和安全。

Git 的学习曲线可能较陡峭,但一旦掌握,它将成为你开发工作中不可或缺的利器。

相关文章:

Git 使用大全:从入门到精通

Git 是目前最流行的分布式版本控制系统&#xff0c;被广泛应用于软件开发中。本文将全面介绍 Git 的各种功能和使用方法&#xff0c;包含大量代码示例和实践建议。 文章目录 Git 基础概念版本控制系统Git 的特点Git 的三个区域Git 文件状态 Git 安装与配置安装 GitLinuxmacOSWi…...

奈飞工厂官网,国内Netflix影视在线看|中文网页电脑版入口

奈飞工厂是一个专注于提供免费Netflix影视资源的在线播放平台&#xff0c;致力于为国内用户提供的Netflix热门影视内容。该平台的资源与Netflix官网基本同步&#xff0c;涵盖电影、电视剧、动漫和综艺等多个领域。奈飞工厂的界面简洁流畅&#xff0c;资源分类清晰&#xff0c;方…...

Python基于蒙特卡罗方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融投资中&#xff0c;风险管理是确保资产安全和实现稳健收益的关键环节。随着市场波动性的增加&#xff0c;传统…...

【bat win系统自动运行脚本-双击启动docker及其它】

win系统自动化运行脚本 创建一个 startup.bat右键编辑&#xff0c;输入以下示例 echo off start "" "C:\Program Files\Docker\Docker\Docker Desktop.exe"timeout /t 5docker start your_container_namestart cmd /k "conda activate your_conda_e…...

SpringBoot离线应用的5种实现方式

在当今高度依赖网络的环境中&#xff0c;离线应用的价值日益凸显。无论是在网络不稳定的区域运行的现场系统&#xff0c;还是需要在断网环境下使用的企业内部应用&#xff0c;具备离线工作能力已成为许多应用的必备特性。 本文将介绍基于SpringBoot实现离线应用的5种不同方式。…...

js 比较两个对象的值,不相等就push对象的key

在JavaScript中&#xff0c;比较两个对象&#xff08;object&#xff09;的值并找出不相等的key&#xff0c;可以通过多种方法实现。下面是一些常用的方法&#xff1a; 方法1&#xff1a;使用JSON.stringify 这种方法适用于简单的对象&#xff0c;其中对象的值是基本类型或可…...

SQL 注入开放与修复

开发&#xff1a; SQL 注入是一种数据库攻击手段。攻击者通过向应用程序提交恶意代码来改变原 SQL 语句的含义&#xff0c; 进而执行任意 SQL 命令&#xff0c;达到入侵数据库乃至操作系统的目的。 例如&#xff1a;下面代码片段中&#xff0c;动态构造并执行了一个 SQ…...

【学习记录】Office 和 WPS 文档密码破解实战

文章目录 &#x1f4cc; 引言&#x1f4c1; Office 与 WPS 支持的常见文件格式Microsoft Office 格式WPS Office 格式 &#x1f6e0; 所需工具下载地址&#xff08;Windows 官方编译版&#xff09;&#x1f510; 破解流程详解步骤 1&#xff1a;提取文档的加密哈希值步骤 2&…...

AGV|无人叉车工业语音播报器|预警提示器LBE-LEX系列性能与接线说明

LBE-LEX系列AGV|无人叉车工业语音播报器|预警提示器&#xff0c;涵盖LBE-LEI-M-00、LBE-LESM-00、LBE-LES-M-01、LBE-LEC-M-00、LBE-KEI-M-00、LBE-KES-M-00、LBE-KES-M-01、LBE-KEC-M-00等型号&#xff0c;适用于各种需要语音提示的场景&#xff0c;主要有AGV、AMR机器人、无人…...

【电路笔记】-变压器电压调节

变压器电压调节 文章目录 变压器电压调节1、概述2、变压器电压调节3、变压器电压调节示例14、变压器电压调节示例25、变压器电压调节示例36、总结变压器电压调节是变压器输出端电压因连接负载电流的变化而从其空载值向上或向下变化的比率或百分比值。 1、概述 电压调节是衡量变…...

多层PCB技术解析:从材料选型到制造工艺的深度实践

在电子设备集成度与信号传输要求不断提升的背景下&#xff0c;多层PCB凭借分层布局优势&#xff0c;成为高速通信、汽车电子、工业控制等领域的核心载体。其通过导电层、绝缘层的交替堆叠&#xff0c;实现复杂电路的立体化设计&#xff0c;显著提升空间利用率与信号完整性。 一…...

(33)课54:3 张表的 join-on 连接举例,多表查询总结。数据库编程补述及游标综合例题。静态 sqL与动态sqL(可带参数)

&#xff08;112&#xff09;3 张表的 join-on 连接举例 &#xff1a; &#xff08;113&#xff09; 多表查询总结 &#xff1a; &#xff08;114&#xff09;数据库编程补述 &#xff1a; 综合例题 &#xff1a; 以上没有动手练习&#xff0c;不知道这样的语法是否…...

Vue3 hooks

export default function(){ let name; function getName(){ return name; } return {name,getName} } use it ----------------------------------------------- import useName from hooks/useName const {name,getName} useName(); 这段代码展示了一个自定义 Vue3钩…...

centos挂载目录满但实际未满引发系统宕机

测试服务器应用系统突然挂了&#xff0c;经过排查发现是因为磁盘“满了”导致的&#xff0c;使用df -h查看磁盘使用情况/home目录使用率已经到了100%,但使用du -sh /home查看发现实际磁盘使用还不到1G&#xff0c;推测有进程正在写入或占用已删除的大文件&#xff08;Linux 系统…...

KKCMS部署

目录 账号 网站目录 快看CMS使用手册 http://10.141.19.241/kkcms/install/ 常规思路&#xff1a;页面点点观察url变化&#xff0c;参数 常规思路&#xff1a;点一个功能模块抓包看什么东西&#xff0c;正确是什么样&#xff0c;错误的是什么样&#xff0c;构造参数。 账号…...

NamedParameterJdbcTemplate 使用方法及介绍

NamedParameterJdbcTemplate是 Spring 框架中用于数据库操作的核心类之一&#xff0c;它拓展了JdbcTemplate&#xff0c;通过封装实现命名参数特性&#xff0c;相比传统占位符?&#xff0c;命名参数可读性和维护性更强&#xff0c;能有效避免参数顺序混淆问题。 一、核心支持…...

【web笔记】JavaScript实现有动画效果的进度条

文章目录 1 实现效果2 实现代码 1 实现效果 2 实现代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"utf-8"><style>#progress {width: 300px;height: 20px;border-radius: 0; /* 移除圆角 */-webkit-appearance…...

安装最新elasticsearch-8.18.2

1.环境我的环境是linux麒麟服务器 (安装 es 7.8以上 java环境必须11以上,可以单独配置es的java目录) 2.下载 官网的地址:下载 Elastic 产品 | Elastic Download Elasticsearch | Elastic Elasticsearch 入门 | Elasticsearch 中文文档 文档 3.我下载的是8.18的 Elasti…...

大数据学习(129)-Hive数据分析

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…...

React 进阶特性

1. ref ref 是 React 提供的一种机制,用于访问和操作 DOM 元素或 React 组件的实例。它可以用于获取某个 DOM 元素的引用,从而执行一些需要直接操作 DOM 的任务,例如手动设置焦点、选择文本或触发动画。 1.1. 使用 ref 的步骤 1. 创建一个 ref:使用 React.createRef 或 …...

Polarctf2025夏季赛 web java ez_check

第一次自己做出一个java&#xff0c;值得小小的记录&#xff0c;polar的java真得非常友好 反编译jar包&#xff0c;一眼就看到有个/deserialize 路由&#xff0c;接受base64的序列化数据&#xff0c;base64解码后 经过一次kmp检查&#xff0c;再由SafeObjectInputStream来反序列…...

vue3+el-table 利用插槽自定义数据样式

<el-table-column label"匹配度" prop"baseMatchingLevel"><template #default"scope"><div :style"{ color: scope.row.baseMatchingLevel > 0.8 ? #00B578 : #FA5151 }">{{ scope.row.baseMatchingLevel }}&l…...

跑通 TrackNet-Badminton-Tracking-tensorflow2 项目全记录

&#x1f4dd; 跑通 TrackNet-Badminton-Tracking-tensorflow2 项目全记录 git clone https://github.com/Chang-Chia-Chi/TrackNet-Badminton-Tracking-tensorflow2.git TrackNet-Badminton-Tracking-tensorflow2 conda create --prefix /cloud/TrackNet-Badminton-Tracking-…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(八)

uboot启动异常及解决 网络问题及解决 打开STM32CubeMX选中ETH1 - A7NS&#xff08;Linux&#xff09;Mode&#xff1a;RGMII&#xff08;Reduced GMII&#xff09;勾选ETH 125MHz Clock Input修改GPIO引脚如图所示 Net: No ethernet found.生成代码后&#xff0c;修改u-boot下…...

CodeBuddy一腾讯内部已有超过 85% 的程序员正在使用de编程工具

大家好&#xff0c;我是程序员500佰&#xff0c;目前正在前往独立开发路线&#xff0c;我会在这里分享关于编程技术、独立开发、技术资讯以及编程感悟等内容。 如果本文能给你提供启发和帮助&#xff0c;还请留下你的一健三连&#xff0c;给我一些鼓励&#xff0c;谢谢。 本文直…...

PHP 表单 - 验证邮件和URL

PHP 表单 - 验证邮件和URL 引言 在Web开发中&#xff0c;表单是用户与网站交互的重要途径。一个功能完善的表单不仅可以收集用户数据&#xff0c;还能提高用户体验。在表单设计中&#xff0c;验证邮件地址和URL是常见的需求。本文将详细介绍如何在PHP中实现邮件和URL的验证&a…...

leetcode238-除自身以外数组的乘积

leetcode 238 思路 可以在不使用除法的情况下&#xff0c;利用前缀积和后缀积来实现解答 前缀积&#xff1a;对每个位置&#xff0c;计算当前数字左侧的所有数字的乘积后缀积&#xff1a;对每个位置&#xff0c;计算当前数字右侧的所有数字的乘积 结合这两种思想&#xff0…...

论文阅读笔记——Large Language Models Are Zero-Shot Fuzzers

TitanFuzz 论文 深度学习库&#xff08;TensorFlow 和 Pytorch&#xff09;中的 bug 对下游任务系统是重要的&#xff0c;保障安全性和有效性。在深度学习&#xff08;DL&#xff09;库的模糊测试领域&#xff0c;直接生成满足输入语言(例如 Python )语法/语义和张量计算的DL A…...

matlab模糊控制实现路径规划

路径规划是机器人和自动驾驶系统中的重要问题之一&#xff0c;它涉及确定如何在给定环境中找到最优路径以达到特定目标。模糊控制是一种有效的控制方法&#xff0c;可以应用于路径规划问题。 路径规划算法的目标是在避免障碍物的情况下&#xff0c;找到机器人或车辆从起点到终…...

浅谈未来汽车电子电气架构发展趋势中的通信部分

目录 一、引入 1.1市场占比演化 1.2未来发展趋势 二、纯电动汽车与传统汽车的区别 2.1 纯电车和燃油车的架构&#xff08;干货&#xff09; 2.2 新能源汽车的分类 ⚡ 1. 纯电动汽车&#xff08;BEV&#xff09; &#x1f50b; 2. 插电式混合动力&#xff08;PHEV&#…...