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 分支
- 安装
gh-pages
pnpm add -D gh-pages
# OR
npm install -D gh-pages
- 在
package.json中添加如下脚本
"deploy": "gh-pages -d dist -m deploy",
"deploy:build": "npm run build && npm run deploy"
- 运行
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)
- GitHub 官方的帮助文档:创建 Personal access tokens(确保选中了
workflows权限) - 将生成的 GitHub 个人访问令牌添加到源仓库的 Secrets 中:
- 进入仓库页面
- 点击 Settings
- 在左侧菜单中点击 Secrets and variables > Actions
- 点击 New repository secret
- 将密钥名称设为 ACCESS_TOKEN,值设为生成的访问令牌,然后点击 Add secret
编写 workflow 文件
- 点击仓库的
Actions按钮 - 点击
Set up a workflow yourself按钮 - 复制如下内容
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: 本地格式isoORiso8601: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 仓库为例
clone仓库mm-notes(默认的remote为origin)
git clone https://github.com/maomao1996/mm-notes
- 添加远程仓库
daily-notes(remote取名为daily-notes)
git remote add daily-notes http://github.com/maomao1996/daily-notes
- 拉取
daily-notes的master分支到本地(本地分支名为notes)
git fetch daily-notes master:notes# 推送本地分支 notes 到远程仓库 daily-notes 的 master 分支
git push daily-notes notes:master
- 关联分支(本地分支
notes关联远程仓库daily-notes的master分支)
本地分支关联远程分支后,可直接使用
git push和git pull命令
git branch --set-upstream-to=daily-notes/master notes
- 提取
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 上显示的是提交时间而非作者提交时间,导致提交记录无法准确查看
在使用前,建议先备份仓库到本地,以防出现意外情况
- 检查远程仓库关联
确保在运行
git filter-branch之后重新关联远程仓库。运行以下命令检查:
git remote -v
- 执行修改
git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
--env-filter: 用于修改环境变量GIT_COMMITTER_DATE: 提交时间GIT_AUTHOR_DATE: 作者提交时间
- 重新关联远程仓库
git remote add origin <之前的远程仓库地址>
- 推送到远程仓库
以
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正式发布:重新定义轻量化数字内容交互体验
在移动互联网流量红利逐渐见顶的当下,用户对即时性、碎片化娱乐与交互体验的需求持续攀升。轻量化小游戏、VR互动、数字孪生、工业仿真等内容形态迅速崛起,但开发者却面临两大核心矛盾:如何将高性能互动内容轻量化嵌入现有应用中?…...
Linux内核 - 非仿生机器人之感知主控系统(协议栈)
Linux内核 - 非仿生机器人之感知主控系统(协议栈) 注:该项目为18年实习期间,参与非仿生六足机器人(Linux方案)的个人理解和积累。时至今日,再看其实仅为一套系统编程相关框架,一直为…...
CZML 格式详解,javascript加载导出CZML文件示例
示例地址:https://dajianshi.blog.csdn.net/article/details/145573994 CZML 格式详解 1. 什么是 CZML? CZML(Cesium Zipped Markup Language)是一种基于 JSON 的文件格式,用于描述地理空间数据和时间动态场景。它专…...
【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 功能拓展 注意:>、 、和~的区分 1.1 嵌套规则 Sass 允许将一套 CSS 样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器,例如: #main p {color: #00ff00;width: 97%;…...
Redis 内存回收机制
Redis 是一个基于内存的键值存储系统,为了避免内存耗尽,Redis 提供了多种内存回收机制。以下是 Redis 内存回收的主要方式: 1. 过期键删除 Redis 支持为键设置过期时间,过期后会自动删除键以释放内存。 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:表示以后台模式运行容器。 -p 27017:27017:将容器内部的 MongoDB 默认端口 27017 映射到宿主机的 27…...
Excel常用操作
Excel常用操作 学习资源 37_电子表格处理考点精讲_设置数据格式_哔哩哔哩_bilibili 快速输入数据与编辑数据 一个工作簿可以包含多个工作表 特殊数据的添加格式 输入负数, 例如-3、-5 常规输入, 直接输入-3、-5;使用(), 例如在单元格中输入(3)回车即可变为-3;上述括号不区分中…...
嵌入式EasyRTC实时通话支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc
EasyRTC已经完美支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc,总体SDK大小控制在680K以内(预计还能压缩100K上下): EasyRTC在hi3516cv610芯片上能双向通话、发送文字以及二进制指令,总体运行…...
在freertos中,中断优先级和任务优先级之间的关系和使用方法
中断优先级和任务优先级如何匹配?任务优先级不同任务之间该用多高的优先级?中断优先级不同中断中该用多高的优先级?中断优先级和任务优先级设置时,怎样设置可以让任务在调度时屏蔽中断?怎样设置可以让任务在调度时&…...
设置ollama接口能外部访问
为了配置Ollama以允许外网访问,你可以按照以下步骤进行操作: 确认Ollama服务已正确安装并运行: 使用以下命令检查Ollama服务的状态: bash Copy Code systemctl status ollama如果服务未运行,使用以下命令启动它&…...
Go GUI 框架, energy many-browser 示例解读
CEF 在 Go 中的应用实现 示例链接 1. 初始化和配置 在使用 CEF 创建基于浏览器的应用时,首先需要初始化并配置应用实例。 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…...
软件工程-软件设计
包括 从管理的观点看包括: 详细设计 概要设计 从技术的观点看包括: 数据设计(详细设计) 系统结构设计(概要设计) 过程设计(详细设计) 任务 分析模型——》设计模型——》设…...
Elasticsearch:15 年来致力于索引一切,找到重要内容
作者:来自 Elastic Shay Banon 及 Philipp Krenn Elasticsearch 刚刚 15 岁了!回顾过去 15 年的索引和搜索,并展望未来 15 年的相关内容。 Elasticsearch 刚刚成立 15 周年。一切始于 2010 年 2 月的一篇公告博客文章(带有标志性的…...
DeepSeek大模型一键部署解决方案:全平台多机分布式推理与国产硬件优化异构计算私有部署
DeepSeek R1 走红后,私有部署需求也随之增长,各种私有部署教程层出不穷。大部分教程只是简单地使用 Ollama、LM Studio 单机运行量化蒸馏模型,无法满足复杂场景需求。一些操作配置也过于繁琐,有的需要手动下载并合并分片模型文件&…...
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助手!
引言:什么是RAG和LLM? LLM (Large Language Model,大语言模型): 就像 ChatGPT 这样的 AI 模型,拥有强大的语言理解和生成能力,但它们的知识局限于训练数据,且可能产生“幻觉”(即生成不准确的信…...
java配置api,vue网页调用api从oracle数据库读取数据
一、主入口文件 1:java后端端口号 2:数据库类型 和 数据库所在服务器ip地址 3:服务器用户名和密码 二、映射数据库表中的数据 resources/mapper/.xml文件 1:column后变量名是数据库中存储的变量名 property的值是column值的…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
【51单片机】4. 模块化编程与LCD1602Debug
1. 什么是模块化编程 传统编程会将所有函数放在main.c中,如果使用的模块多,一个文件内会有很多代码,不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数声明,其他.c文…...
HTML中各种标签的作用
一、HTML文件主要标签结构及说明 1. <!DOCTYPE html> 作用:声明文档类型,告知浏览器这是 HTML5 文档。 必须:是。 2. <html lang“zh”>. </html> 作用:包裹整个网页内容,lang"z…...
Go 并发编程基础:select 多路复用
select 是 Go 并发编程中非常强大的语法结构,它允许程序同时等待多个通道操作的完成,从而实现多路复用机制,是协程调度、超时控制、通道竞争等场景的核心工具。 一、什么是 select select 类似于 switch 语句,但它用于监听多个通…...
