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 stash
        save '说明信息' # 添加说明信息
        -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:
    # 服务器环境:最新版 ubuntu
    runs-on: ubuntu-latest
    steps:
      # 拉取代码
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      # 安装 pnpm
      - name: Install pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 8

      # 设置 node 版本
      - name: Set node version to 18
        uses: actions/setup-node@v3
        with:
          node-version: 18
          cache: 'pnpm'

      # 打包静态文件
      - name: Build
        run: pnpm install && pnpm run build

      # 部署
      - name: Deploy
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          # 当需要操作其他仓库时,需要配置个人的 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/970146.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【STM32】H743的以太网MAC控制器的一个特殊功能

调试743的MAC&#xff0c;翻阅手册的时候&#xff0c;发现了一个有意思的功能 混杂模式 H743的MAC控制器&#xff0c;可以设置为混杂模式&#xff0c;这就意味着它可以做一些网络监控的应用&#xff0c;譬如连接具备端口镜像功能的交换机&#xff0c;然后直接代替PC实现网络数据…

【Spring AI】基于SpringAI+Vue3+ElementPlus的QA系统实现(后端)

整理不易&#xff0c;请不要吝啬你的赞和收藏。 1. 前言 这篇文章将介绍如何基于 RAG 技术&#xff0c;使用 SpringAI Vue3 ElementPlus 实现一个 Q&A 系统。本文使用 deepseek 的 DeepSeek-V3 作为聊天模型&#xff0c;使用阿里百炼的 text-embedding-v3 作为向量模型&…

AI法理学与责任归属:技术演进下的法律重构与伦理挑战

文章目录 引言:智能时代的新型法律困境一、AI技术特性对传统法理的冲击1.1 算法黑箱与可解释性悖论1.2 动态学习系统的责任漂移1.3 多智能体协作的责任稀释二、AI法理学的核心争议点2.1 法律主体资格认定2.2 因果关系的技术解构2.3 过错标准的重新定义三、责任归属的实践案例分…

数值积分:通过复合梯形法计算

在物理学和工程学中&#xff0c;很多问题都可以通过数值积分来求解&#xff0c;特别是当我们无法得到解析解时。数值积分是通过计算积分区间内离散点的函数值来近似积分的结果。在这篇博客中&#xff0c;我将讨论如何使用 复合梯形法 来进行数值积分&#xff0c;并以一个简单的…

mybatis-plus逆向code generator pgsql实践

mybatis-plus逆向code generator pgsql实践 环境准备重要工具的版本供参考pom依赖待逆向的SQL 配置文件CodeGenerator配置类配置类说明 环境准备 重要工具的版本 jdk1.8.0_131springboot 2.7.6mybatis-plus 3.5.7pgsql 14.15 供参考pom依赖 <?xml version"1.0&quo…

RedHat8安装postgresql15和 postgis3.4.4记录及遇到的问题总结

安装包对照版本参考 UsersWikiPostgreSQLPostGIS – PostGIS 如果Red Hat系统上有旧版本的PostgreSQL需要卸载 在较新的Red Hat版本&#xff0c;使用dnf包管理器卸载&#xff1a;sudo dnf remove postgresql-server postgresql 旧版本&#xff0c;使用yum包管理器卸载 sudo y…

2024BaseCTF_week4_web上

继续&#xff01;冲冲冲 目录 圣钥之战1.0 nodejs 原型 原型链 原型链污染 回到题目 flag直接读取不就行了&#xff1f; 圣钥之战1.0 from flask import Flask,request import jsonapp Flask(__name__)def merge(src, dst):for k, v in src.items():if hasattr(dst, __geti…

leetcode:627. 变更性别(SQL解法)

难度&#xff1a;简单 SQL Schema > Pandas Schema > Salary 表&#xff1a; ----------------------- | Column Name | Type | ----------------------- | id | int | | name | varchar | | sex | ENUM | | salary | int …

【免费送书活动】《MySQL 9从入门到性能优化(视频教学版)》

本博主免费赠送读者3本书&#xff0c;书名为《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》。 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 这本书已经公开…

STM32、GD32驱动TM1640原理图、源码分享

一、原理图分享 二、源码分享 /************************************************* * copyright: * author:Xupeng * date:2024-07-18 * description: **************************************************/ #include "smg.h"#define DBG_TAG "smg&…

ElementUI 的组件 Switch(开关)如何让文字显示在按钮上

效果图&#xff1a; 一、引入switch组件 给组件自定义一个类&#xff1a;tableScopeSwitch&#xff0c;设置开关的值和对应展示的文字&#xff08;开为 1&#xff0c;并展示启用&#xff1b;关为 0&#xff0c;并展示禁用&#xff09;。 <div class"tableScopeSwitch…

我的新书《青少年Python趣学编程(微课视频版)》出版了!

&#x1f389; 激动人心的时刻来临啦&#xff01; &#x1f389; 小伙伴们久等了&#xff0c;我的第一本新书 《青少年Python趣学编程&#xff08;微课视频版&#xff09;》 正式出版啦&#xff01; &#x1f4da;✨ 在这个AI时代&#xff0c;市面上的Python书籍常常过于枯燥&…

CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测,光伏功率预测

代码地址&#xff1a;CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测&#xff0c;光伏功率预测 CNN-BiLSTM卷积神经网络双向长短期记忆神经网络多变量多步预测 一、引言 1.1、研究背景和意义 光伏功率预测在现代电力系统中占有至关重要的地位。随着可再生能源…

人工智能任务21-飞蛾火焰优化算法(MFO)在深度学习中的应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能任务21-飞蛾火焰优化算法(MFO)在深度学习中的应用。飞蛾火焰优化算法&#xff08;Moth-Flame Optimization, MFO&#xff09;是一种受自然界中飞蛾向光源趋近行为启发的新型群体智能优化算法。在自然界中&a…

处理项目中存在多个版本的jsqlparser依赖

异常提示 Correct the classpath of your application so that it contains a single, compatible version of net.sf.jsqlparser.statement.select.SelectExpressionIte实际问题 原因&#xff1a;项目中同时使用了 mybatis-plus 和 pagehelper&#xff0c;两者都用到了 jsqlpa…

Java数组二:数组的使用

for-each循环 打印数组所有元素 public class Demo04 {public static void main(String[] args) {int[] num {1,5,2,3,4};for (int num1:num) {System.out.println(num1);}} }多维数组 多维数组可以看成是数组的数组&#xff0c;比如二维数组就是一个特殊的一维数组&#x…

基于MATLAB的沥青试样孔隙率自动分析——原理详解与代码实现

摘要 在材料科学与土木工程领域&#xff0c;沥青孔隙率是评价其耐久性和稳定性的重要指标。本文提出一种基于图像处理的孔隙率自动计算方法&#xff0c;通过MATLAB实现灰度化、对比度增强、形态学处理等关键步骤&#xff0c;最终输出试样孔隙率。代码注释清晰&#xff0c;可直…

修改OnlyOffice编辑器默认字体

通过Docker修改OnlyOffice编辑器默认字体 问题描述详细方案1. 删除原生字体文件2. 创建字体目录3. 复制字体文件到容器中4. 执行字体更新脚本5. 重新启动容器 注意事项 问题描述 在OnlyOffice中&#xff0c;编辑器的默认字体可能不符合公司或个人的需求&#xff0c;通常会使用…

【天地图】绘制、删除点线面

使用天地图绘制、删除点线面 实现效果图地图组件完整代码使用地图组件完整代码 实现效果图 地图组件完整代码 // 天地图组件 <template><div class"map-container"><div id"mapCon"></div></div> </template><scri…

【MySQL】高频 SQL 50 题(基础版)

高频SQL50题&#xff08;基础版&#xff09; 1.查询 2.连接 MySQL多表查询&#xff08;联合查询、连接查询、子查询&#xff09; left join 左连接 我们首先执行LEFT JOIN操作&#xff0c;将两个表的数据基于 id 列进行组合。同样&#xff0c;我们使用 LEFT JOIN 来确保将所…