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

Git | 相关命令

请添加图片描述

相关资料

  • 官网
  • Git 学习教程
  • Git 入门指南
  • Git 的奇技淫巧
  • Git Extras git 命令行扩展工具
  • 配置 Git 处理行结束符
  • Git 配置多个 SSH-Key
  • 下载相关
    • Windows 版下载镜像
    • 使用 jsdelivr 加速 Github 仓库资源
  • commit 常用的 type

常用 Git 命令

[xxx] 均为可选参数

git clone

# 拷贝一个 Git 仓库到本地
git clone 仓库地址
git clone 仓库地址 --depth 1 # 只克隆最近一次的 commit

git 配置

# 查看当前的 Git 配置
git config --list
# 设置使用 Git 时的用户名称
git config [--global] user.name "名称"
# 设置使用 Git 时的邮箱地址
git config [--global] user.email "邮箱"

git 文件操作

# 添加所有文件到暂存区
git add .
# 提交暂存区到仓库区
git commit -m "提交信息"
git commit --amend # 增补提交,使用上次的 commit 信息,不添加新的 commit 记录
# 显示变更的文件
git status-s # 精简输出
# 只暂存被追踪的文件
git stashsave '说明信息' # 添加说明信息-u # 暂存所有文件
# 查看 stash 列表
git stash list
# 取出最近一次的 stash
git stash apply
# 取出并删除最近一次的 stash
git stash pop
# 清空所有 stash
git stash clear

git 分支操作

# 列出所有本地分支
git branch[分支名] # 新建一个分支(停留在当前分支)-r # 列出所有远程分支-a # 列出所有本地分支和远程分支-d [分支名] # 删除分支-D [分支名] # 强制删除分支-r # 列出所有远程分支
# 新建一个空白分支
git checkout --orphan [分支名]# 删除本地所有分支
git branch | xargs git branch -d
# 批量删除包含指定字符的本地分支【以 dev 为例】
git branch | grep 'dev' | xargs git branch -d# 获取当前的分支名
git symbolic-ref --short -q HEAD
git rev-parse --abbrev-ref HEAD
# 合并指定分支到当前分支
git merge [分支名]
# 显示所有远程仓库
git remote -v
# 添加远程仓库
git remote add [name] [url]
# 删除远程仓库
git remote remove [name]
# 查看远程仓库地址
git remote get-url [name]
# 取回远程仓库的变化,并与本地分支合并
git pull [remote][branch]
# 上传本地指定分支到远程仓库
git push [remote][branch]
# 强行推送当前分支到远程仓库,忽略冲突
git push [remote] --force

git 日志

# 查看提交过的完整日志
git log--oneline # 查看精简日志(精简版本号和提交信息)--pretty=oneline # 查看精简日志(完整版本号和提交信息)
# 查看所有分支的所有操作记录(包括被删除的 commit 记录和 reset 操作)
git reflog

git 统计

# 统计作者提交的次数
git shortlog -s -n# 计算存储库中的提交总数
git rev-list --all --count
# 计算存储库中分支指定的提交总数
git rev-list --count [分支名]

git reset

# 撤销 commit 操作
git reset --soft HEAD~1 # git reset --soft commit_id
# 撤销 commit 和 add 操作
git reset --mixed HEAD~1 # git reset --mixed commit_id
# 撤销 commit 和 add 操作同时撤销本地已追踪内容的修改
git reset --hard HEAD~1 # git reset --hard commit_id

查看完整版 Git 命令

三年 Git 使用心得 & 常见问题整理

git 命令大全 github

删除 Git 中的所有提交历史记录

master 分支为例

# 创建 orphan 分支(以 main 为例)
git checkout --orphan main# 添加需要上传文件
git add .# 提交更改
git commit -m "Initial"# 删除需要清空提交记录的分支
git branch -D master# 将当前分支重命名为需要清空提交记录的分支名
git branch -m master# 强制更新存储库
git push -f origin master

同步 github fork 项目上游更新

# 1. 添加上游仓库
git remote add upstream https://github.com/项目地址# 2. 拉取上游变动
git fetch upstream# 3. 合并(以 master 位置为例)
git rebase upstream/master
# OR
git merge upstream/master# 4. 更新远程 fork 仓库分支(以 master 位置为例)
git push origin master

将代码提交到 github 的 gh-pages 分支

  1. 安装 gh-pages
pnpm add -D gh-pages
# OR
npm install -D gh-pages
  1. package.json 中添加如下脚本
"deploy": "gh-pages -d dist -m deploy",
"deploy:build": "npm run build && npm run deploy"
  1. 运行 deploy 脚本
pnpm deploy
# OR
npm run deploy

使用 GitHub Actions 自动部署

GitHub Actions 是 GitHub 的持续集成服务

配置 Secrets

2023.09.05:最新的 GitHub Actions 中 GitHub 会自动创建唯一的 GITHUB_TOKEN 机密以在工作流中使用(当需要操作其他仓库时,还是需要配置个人的 Secrets)

Action 需要有操作仓库的权限(偷懒直接使用 Personal access tokens,官方更推荐 Fine-grained personal access tokens)

  1. GitHub 官方的帮助文档:创建 Personal access tokens(确保选中了 workflows 权限
  2. 将生成的 GitHub 个人访问令牌添加到源仓库的 Secrets 中:
    1. 进入仓库页面
    2. 点击 Settings
    3. 在左侧菜单中点击 Secrets and variables > Actions
    4. 点击 New repository secret
    5. 将密钥名称设为 ACCESS_TOKEN,值设为生成的访问令牌,然后点击 Add secret

编写 workflow 文件

  1. 点击仓库的 Actions 按钮
  2. 点击 Set up a workflow yourself 按钮
  3. 复制如下内容
name: GitHub Actions Build and Deploy# 触发条件
on:# 手动触发workflow_dispatch:# push 到指定分支push:branches:- master# 设置权限
permissions:contents: write# 设置上海时区
env:TZ: Asia/Shanghai# 任务
jobs:build-and-deploy:# 服务器环境:最新版 ubunturuns-on: ubuntu-lateststeps:# 拉取代码- name: Checkoutuses: actions/checkout@v3with:fetch-depth: 0# 安装 pnpm- name: Install pnpmuses: pnpm/action-setup@v2with:version: 8# 设置 node 版本- name: Set node version to 18uses: actions/setup-node@v3with:node-version: 18cache: 'pnpm'# 打包静态文件- name: Buildrun: pnpm install && pnpm run build# 部署- name: Deployuses: JamesIves/github-pages-deploy-action@v4with:# 当需要操作其他仓库时,需要配置个人的 token(根据需要设置)token: ${{ secrets.ACCESS_TOKEN }}# 指定仓库(根据需要设置)repository-name: maomao1996/mm-notes# GitHub Pages 读取的分支branch: gh-pages# 静态文件所在目录folder: dist

::: info 相关资料

  • GitHub Actions 入门教程 | 阮一峰
  • GitHub Actions 中文文档

:::

git log 格式化

修改默认时间格式

git config --global log.date iso8601
  • relative: 相对时间格式
  • local: 本地格式
  • iso OR iso8601: ISO8601 格式
  • rfc: RFC2822 格式
  • short: YYYY-MM-DD 格式
  • raw: 时间戳格式
  • default: 默认格式

自定义输出格式

# 格式为: [commit hash] [提交时间] [提交信息] [branch tag 信息] [作者名称]
git log --pretty='%C(yellow)%h%C(reset) %ad %C(green)%s%C(reset) %C(red)%d%C(reset) %C(bold blue)[%an]%C(reset)'# 配置别名
alias glogp="git log --pretty='%C(yellow)%h%C(reset) %ad %C(green)%s%C(reset) %C(red)%d%C(reset) %C(bold blue)[%an]%C(reset)'"
  • %C(颜色值): 修改输出颜色
  • %H: 完整的 commit hash
  • %h: 缩写的 commit hash
  • %ad: 作者提交时间(绝对时间 可以使用 -date= 定制格式)
  • %ar: 作者提交时间(相对时间 按多久之前显示)
  • %s: commit message
  • %d: branch tag 信息
  • %an: 作者名称
  • %ae: 作者的邮箱地址

获取文件的提交时间

# 获取文件最后一次修改的时间
git log -1 --pretty="%ci" "./docs/index.md"# 获取文件第一次添加到仓库的时间
git log -1 --diff-filter=A --follow --pretty="%ci" "./docs/index.md"
  • -1: 只显示一条记录
  • --diff-filter=A: 只显示添加的记录
  • --follow: 显示文件的历史记录(包括移动和重命名)
  • --pretty="%ci": 只显示提交时间

tip "%ad""%ci" 的区别

  • %ad: 表示作者日期(Author Date)
    • 指作者实际执行提交操作的日期和时间
    • 可能会因为提交者的时区设置而有所不同
  • %ci: 表示提交日期和时间(Commit Date)
    • 指提交被记录在版本库的日期和时间
    • 不受提交者时区设置的影响,更具一致性

本地不同分支关联不同的远程仓库

以茂茂的 mm-notes 和 daily-notes 仓库为例

  1. clone 仓库 mm-notes(默认的 remoteorigin
git clone https://github.com/maomao1996/mm-notes
  1. 添加远程仓库 daily-notesremote 取名为 daily-notes
git remote add daily-notes http://github.com/maomao1996/daily-notes
  1. 拉取 daily-notesmaster 分支到本地(本地分支名为 notes
git fetch daily-notes master:notes# 推送本地分支 notes 到远程仓库 daily-notes 的 master 分支
git push daily-notes notes:master
  1. 关联分支(本地分支 notes 关联远程仓库 daily-notesmaster 分支)

本地分支关联远程分支后,可直接使用 git pushgit pull 命令

git branch --set-upstream-to=daily-notes/master notes
  1. 提取 master 分支的指定提交到 notes 分支
# 切换到 notes 分支
git checkout notes# 查看 master 分支的 commit 信息
git log --oneline master# 提取 master 分支的指定提交到 notes 分支
git cherry-pick <commit hash># 推送到远程仓库
git push

使用 git-filter-repo 重写 Git 历史

git-filter-repo 是一个用于重写 Git 历史的工具,相较于 git filter-branch 其执行速度更快且功能更为全面

安装

# macOS
brew install git-filter-repo

修正提交时间为作者提交时间

在使用 git rebase 并将其推送到远程仓库后,GitHub 上显示的是提交时间而非作者提交时间,导致提交记录无法准确查看

在使用前,建议先备份仓库到本地,以防出现意外情况

  1. 检查远程仓库关联

确保在运行 git filter-branch 之后重新关联远程仓库。运行以下命令检查:

git remote -v
  1. 执行修改
git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
  • --env-filter: 用于修改环境变量
  • GIT_COMMITTER_DATE: 提交时间
  • GIT_AUTHOR_DATE: 作者提交时间
  1. 重新关联远程仓库
git remote add origin <之前的远程仓库地址>
  1. 推送到远程仓库

master 分支为例,使用以下命令推送修改:

git push -u origin master --force

相关文章:

Git | 相关命令

相关资料 官网Git 学习教程Git 入门指南Git 的奇技淫巧Git Extras git 命令行扩展工具配置 Git 处理行结束符Git 配置多个 SSH-Key下载相关 Windows 版下载镜像使用 jsdelivr 加速 Github 仓库资源 commit 常用的 type 常用 Git 命令 [xxx] 均为可选参数 git clone # 拷贝一…...

RealClip正式发布:重新定义轻量化数字内容交互体验

在移动互联网流量红利逐渐见顶的当下&#xff0c;用户对即时性、碎片化娱乐与交互体验的需求持续攀升。轻量化小游戏、VR互动、数字孪生、工业仿真等内容形态迅速崛起&#xff0c;但开发者却面临两大核心矛盾&#xff1a;如何将高性能互动内容轻量化嵌入现有应用中&#xff1f;…...

Linux内核 - 非仿生机器人之感知主控系统(协议栈)

Linux内核 - 非仿生机器人之感知主控系统&#xff08;协议栈&#xff09; 注&#xff1a;该项目为18年实习期间&#xff0c;参与非仿生六足机器人&#xff08;Linux方案&#xff09;的个人理解和积累。时至今日&#xff0c;再看其实仅为一套系统编程相关框架&#xff0c;一直为…...

CZML 格式详解,javascript加载导出CZML文件示例

示例地址&#xff1a;https://dajianshi.blog.csdn.net/article/details/145573994 CZML 格式详解 1. 什么是 CZML&#xff1f; CZML&#xff08;Cesium Zipped Markup Language&#xff09;是一种基于 JSON 的文件格式&#xff0c;用于描述地理空间数据和时间动态场景。它专…...

【gRPC-gateway】auth-通过拦截器从上下文中提取元数据用于认证,与从http header转发待认证数据到上下文进行验证,go案例

从grpc上下文中提取元数据用于认证 案例 interceptor.go package serverimport ("context""errors""google.golang.org/grpc""google.golang.org/grpc/metadata""strings" )// UnaryInterceptor 是一个 unary RPC 的拦截器…...

Sass基础知识以及常用知识整理

Sass基础知识以及常用知识整理 一、CSS 功能拓展 注意&#xff1a;>、 、和~的区分 1.1 嵌套规则 Sass 允许将一套 CSS 样式嵌套进另一套样式中&#xff0c;内层的样式将它外层的选择器作为父选择器&#xff0c;例如&#xff1a; #main p {color: #00ff00;width: 97%;…...

Redis 内存回收机制

Redis 是一个基于内存的键值存储系统&#xff0c;为了避免内存耗尽&#xff0c;Redis 提供了多种内存回收机制。以下是 Redis 内存回收的主要方式&#xff1a; 1. 过期键删除 Redis 支持为键设置过期时间&#xff0c;过期后会自动删除键以释放内存。 1.1 设置过期时间 SET key…...

docker安装mongo,导入、导出数据

1、docker安装mongo docker pull mongo docker run -d -p 27017:27017 --name mongodb mongodocker update mongodb --restartalways ## 开机自启动-d&#xff1a;表示以后台模式运行容器。 -p 27017:27017&#xff1a;将容器内部的 MongoDB 默认端口 27017 映射到宿主机的 27…...

Excel常用操作

Excel常用操作 学习资源 37_电子表格处理考点精讲_设置数据格式_哔哩哔哩_bilibili 快速输入数据与编辑数据 一个工作簿可以包含多个工作表 特殊数据的添加格式 输入负数, 例如-3、-5 常规输入, 直接输入-3、-5;使用(), 例如在单元格中输入(3)回车即可变为-3;上述括号不区分中…...

嵌入式EasyRTC实时通话支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc

EasyRTC已经完美支持海思hi3516cv610&#xff0c;编译器arm-v01c02-linux-musleabi-gcc&#xff0c;总体SDK大小控制在680K以内&#xff08;预计还能压缩100K上下&#xff09;&#xff1a; EasyRTC在hi3516cv610芯片上能双向通话、发送文字以及二进制指令&#xff0c;总体运行…...

在freertos中,中断优先级和任务优先级之间的关系和使用方法

中断优先级和任务优先级如何匹配&#xff1f;任务优先级不同任务之间该用多高的优先级&#xff1f;中断优先级不同中断中该用多高的优先级&#xff1f;中断优先级和任务优先级设置时&#xff0c;怎样设置可以让任务在调度时屏蔽中断&#xff1f;怎样设置可以让任务在调度时&…...

设置ollama接口能外部访问

为了配置Ollama以允许外网访问&#xff0c;你可以按照以下步骤进行操作&#xff1a; ‌确认Ollama服务已正确安装并运行‌&#xff1a; 使用以下命令检查Ollama服务的状态&#xff1a; bash Copy Code systemctl status ollama如果服务未运行&#xff0c;使用以下命令启动它&…...

Go GUI 框架, energy many-browser 示例解读

CEF 在 Go 中的应用实现 示例链接 1. 初始化和配置 在使用 CEF 创建基于浏览器的应用时&#xff0c;首先需要初始化并配置应用实例。 1.1 创建应用实例 // 创建CEF应用实例 app : cef.NewApplication()1.2 配置应用参数 // 设置缓存路径 rootCache : filepath.Join(const…...

Docker 部署 MongoDB | 国内阿里镜像

一、简易单机版 1、镜像拉取 docker pull registry.cn-hangzhou.aliyuncs.com/farerboy/mongo:8.0.5-rc1 2、运行镜像 docker run -it --name mongodb \ -e MONGO_INITDB_ROOT_USERNAMEmongoroot \ -e MONGO_INITDB_ROOT_PASSWORDmongoroot \ -v /wwwroot/opt/docker/mong…...

软件工程-软件设计

包括 从管理的观点看包括&#xff1a; 详细设计 概要设计 从技术的观点看包括&#xff1a; 数据设计&#xff08;详细设计&#xff09; 系统结构设计&#xff08;概要设计&#xff09; 过程设计&#xff08;详细设计&#xff09; 任务 分析模型——》设计模型——》设…...

Elasticsearch:15 年来致力于索引一切,找到重要内容

作者&#xff1a;来自 Elastic Shay Banon 及 Philipp Krenn Elasticsearch 刚刚 15 岁了&#xff01;回顾过去 15 年的索引和搜索&#xff0c;并展望未来 15 年的相关内容。 Elasticsearch 刚刚成立 15 周年。一切始于 2010 年 2 月的一篇公告博客文章&#xff08;带有标志性的…...

DeepSeek大模型一键部署解决方案:全平台多机分布式推理与国产硬件优化异构计算私有部署

DeepSeek R1 走红后&#xff0c;私有部署需求也随之增长&#xff0c;各种私有部署教程层出不穷。大部分教程只是简单地使用 Ollama、LM Studio 单机运行量化蒸馏模型&#xff0c;无法满足复杂场景需求。一些操作配置也过于繁琐&#xff0c;有的需要手动下载并合并分片模型文件&…...

Docker 部署 MySQL-5.7 单机版

一、镜像获取 # docker hub 镜像 docker pull farerboy/mysql:5.7 # 国内阿里镜像 docker pull registry.cn-hangzhou.aliyuncs.com/farerboy/mysql:5.7 以上两个镜像二选一即可 二、运行容器 docker run -dti --name mysql \n --privileged \n --cgroupns private \n --e…...

打破AI黑盒,拥抱开源力量:基于openGauss+DeepSeek的本地知识库,打造你的专属AI助手!

引言&#xff1a;什么是RAG和LLM&#xff1f; LLM (Large Language Model&#xff0c;大语言模型): 就像 ChatGPT 这样的 AI 模型&#xff0c;拥有强大的语言理解和生成能力&#xff0c;但它们的知识局限于训练数据&#xff0c;且可能产生“幻觉”&#xff08;即生成不准确的信…...

java配置api,vue网页调用api从oracle数据库读取数据

一、主入口文件 1&#xff1a;java后端端口号 2&#xff1a;数据库类型 和 数据库所在服务器ip地址 3&#xff1a;服务器用户名和密码 二、映射数据库表中的数据 resources/mapper/.xml文件 1&#xff1a;column后变量名是数据库中存储的变量名 property的值是column值的…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...