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

【Git】版本更新

git官网

https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

Git版本更新

# 如果你使用的是Windows
git update-git-for-windows  # 如果你使用的是Linux
sudo apt-get install git  brew update# 如果你使用的是macOS
brew install git           

检查版本

git version


git switch:安全切换分支

git switch 命令是在 Git 2.23.0 版本中引入的,以解决 git checkout 命令职责过重的问题,并使得 Git 的命令更加直观和易于理解。

在 Git 2.23 之前,git checkout 既用于切换分支,也用于还原文件内容,很容易引起混淆。通过将 git checkout 的功能拆分,Git 团队创建了两个新的、更专业的命令:

  • git switch:专门用于在分支之间进行切换。

  • git restore:专门用于还原文件内容。

使用 git switch 切换分支非常简单,以下是基本用法:

# 切换到已存在的分支
$ git switch <branch-name># 创建并切换到新分支
$ git switch -c<new-branch-name># 从远程仓库创建并跟踪一个本地分支
$ git switch -c<new-branch-name>--track<remote>/<branch-name># 返回到上一个分支
$ git switch -

注意:如果遇到错误信息 'switch' is not a git command,那么可能是因为 Git 版本低于 2.23.0。可以通过运行 git --version 来检查 Git 版本,并升级到最新版本以使用这些新特性。

git restore:安全撤销更改

git restore 命令同样是在 Git 2.23.0 版本中引入的,专门用于恢复工作目录中的文件内容。

git restore 主要用来撤销工作目录中的更改,可以用来丢弃未提交的工作树修改、还原删除的文件,或者将文件重置为之前的某个提交状态。以下是 git restore 的基本用法:

# 恢复工作目录中的文件到最近一次提交的状态
$ git restore <file># 从指定的提交中恢复文件到工作目录
$ git restore --source=<commit><file># 取消暂存区的更改(类似于 git reset HEAD <file>)
$ git restore --staged<file># 恢复所有文件到指定的提交状态
$ git restore --source=<commit>.# 恢复所有已删除的文件
$ git restore -w -- *
# 丢弃暂存区和工作目录中的更改(即恢复到指定的提交状态)
$ git restore --staged--worktree<file>

使用 git restore 时,可以选择性指定 -- staged 来影响暂存区,或者 -- worktree来影响工作目录。如果同时指定了这两个选项,则会同时影响暂存区和工作目录。

git restore 是一个相对安全的操作,因为它不会改变分支的历史记录,它智慧影响工作目录和/或暂存区

git worktree :同时在多个分支工作

git worktree 命令是在 Git 2.5 版本中引入的,它允许在同一个仓库中创建多个工作目录(worktrees),每个工作目录可以检出不同的分支或提交。这为开发者提供了同时处理多个任务的能力,比如在不同的分支上进行开发、测试,而不需要来回切换分支。

以下是 git worktree 的基本用法:

# 添加一个新的工作目录,并检出指定分支
$ git worktree add<path>[<branch>]# 列出所有的工作目录
$ git worktree list# 移除一个工作目录(必须先确保该目录没有未提交的更改)
$ git worktree remove <path># 移动一个工作目录到新的位置
$ git worktree move <current-path><new-path>

例如,如果想要添加一个新的工作目录来检出名为 feature-branch 的分支,可以这样做:

git worktree add../my-feature-worktree feature-branch

这将在 ../my-feature-worktree 目录下创建一个新的工作目录,并检出 feature-branch 分支

git sparse-checkout:高效处理大型仓库

git sparse-checkout 是在 Git 2.25.0 版本中引入的,个功能是对之前存在的稀疏检出机制的一个重大改进。通过 git sparse-checkout,开发者可以更高效地克隆大型仓库,只检出部分文件或目录,而不是整个项目。

要启用 sparse-checkout,首先需要设置仓库以使用稀疏检出模式:

# 启用 sparse-checkout 模式
$ git sparse-checkout init# 设置你想要包括的模式或路径
$ git sparse-checkout set<pattern>...

例如,如果只想检出 src 目录及其子目录中的文件,可以这样做:

$ git sparse-checkout set src/

如果想添加多个模式或路径,可以在 set 命令后列出所有路径,或者分多次调用该命令

除了 set 命令,还可以使用 add 和 list 来管理稀疏检出模式:

# 添加额外的路径到稀疏检出模式
$ git sparse-checkout add<pattern>...# 列出现有的稀疏检出模式
$ git sparse-checkout list

如果不再需要稀疏检出模式,可以通过以下命令禁用它,并恢复完整的检出状态

# 禁用 sparse-checkout 模式并恢复完整检出
$ git sparse-checkout disable

git range-diff:比较提交范围之间的更改

git range-diff 是在 Git 2.19.0 版本中引入的,用于比较两个提交范围之间的差异。它可以帮助开发者理解在一次变基(rebase)、合并(merge)或历史改写操作后,一系列提交发生了哪些变化。

git range-diff 的基本用法如下:

# 比较两个分支上的最近 n 个提交
$ git range-diff A~n..A B~n..B# 或者更常见的用法是直接指定两个范围
$ git range-diff A..B C..D

这里的 A..B 和 C..D 分别表示两个不同的提交范围。例如,如果想比较 feature 分支在变基前后的差异,可以这样做:

# 假设 origin/feature 是变基之前的远程分支状态
# 而 feature 是变基之后的本地分支状态
$ git range-diff origin/feature..feature~n feature~n..feature

git range-diff 会输出每个提交的摘要信息,包括提交消息、作者、日期等,并高亮显示两个范围内的提交之间的差异。如果提交的内容完全相同,它将只显示提交消息并指出它们是相同的;如果有差异,则会详细列出差异之处

git maintenance:自动化仓库健康

git maintenance是在 Git 2.30.0 版本中引入的,用于管理和自动化各种维护任务的命令。这个命令旨在简化和优化仓库的维护工作,通过提供一组预定义的任务来帮助保持仓库的健康状态和高效性能。

git maintenance 提供了几种子命令来管理不同的维护任务:

  • 启用和禁用自动维护:

    # 启用自动维护
    $ git maintenance start# 禁用自动维护
    $ git maintenance stop
  • 执行一次性维护任务:手动触发一次性的维护任务,这对于在特定时间点(如大型提交之后)优化仓库非常有用。

    # 执行所有配置的维护任务
    $ git maintenance run# 执行特定类型的维护任务
    $ git maintenance run --task=<task>

常见的维护任务包括:

  • gc:运行完整的垃圾收集,包括压缩对象数据库。

  • commit-graph:构建或更新提交图文件以加速提交历史查询。

  • loose-objects:清理松散对象并将其打包。

  • incremental-repack:逐步重新打包对象以优化存储。

  • prefetch:预先获取远程分支的新数据,以加速未来的克隆和拉取操作。

  • 配置自动维护计划:可以通过配置文件设置哪些任务应该被定期执行以及它们的执行频率。例如,在 .git/config 文件中添加如下内容:
[maintenance "daily"]task = prefetch    task = loose-objects
[maintenance "hourly"]task = commit-graph
[maintenance "weekly"]task = incremental-repack
[maintenance "monthly"]task = gc

然后启用这些计划:

$ git maintenance start --schedule=daily
$ git maintenance start --schedule=hourly
$ git maintenance start --schedule=weekly
$ git maintenance start --schedule=monthly

git log --remerge-diff:更好地理解合并

从 Git 2.35 版本开始,可以使用 git log --remerge-diff 命令来更好地理解合并提交。通常情况下,合并提交会显示哪些分支被合并了,但并不总是能清晰地解释合并过程中引入的具体更改,特别是在解决合并冲突时所做的改动。

git log --remerge-diff 通过重播记录的合并策略来重建合并提交,并展示该合并引入的确切更改。这对于调试合并冲突或审查复杂的合并历史非常有用。

http://www.dtcms.com/a/544793.html

相关文章:

  • 网站建设与维护就业前景电商培训类网站模板下载
  • Android电池优化和前后台任务
  • 使用 Java 将 Excel 工作表转换为 CSV 格式
  • Kotlin基础类型扩展函数使用指南
  • 城市建设网站做印刷品去哪个网站
  • 怎么查网站到期时间php网站搭建环境
  • 汽车行业SCRM:企业微信+服务商模式破解汽车服务行业痛点的案例分析
  • 【第五章:计算机视觉-项目实战之推荐/广告系统】3.精排算法-(4)重排算法:MMR、DPP原理精讲
  • Xamarin.Forms菜鸟笔记--10.获取点击/滑动 Image位置
  • 网络环路“侦探”指南:如何快速定位与根除网络风暴
  • Android 自定义Switch
  • HBuilder 上架 iOS 应用全流程指南:从云打包到开心上架(Appuploader)上传的跨平台发布实践
  • PHP基础知识
  • Obsidian 入门教程
  • 响应式购物网站模板广州网站优化电话
  • 中山 网站建设 骏域做ag视频大全网站
  • Vue二进制数据渲染成图片
  • 未来智能网联汽车的网络安全档案建立方法
  • 防止表单重复提交功能简单实现
  • 网络安全等级保护测评高风险判定实施指引(试行)--2020与2025版对比
  • Squid 可观测性最佳实践
  • 【深度学习新浪潮】DeepSeek-OCR深度解析:视觉-文本压缩驱动的新一代OCR技术革命
  • 官方网站建设投标书网站建设包含哪些
  • 相应式手机网站建设网站建设专员一定要会网站建设吗
  • 手机云台ESD整改案例-阿赛姆电子
  • 拆解ASP.NET MVC 核心优势:松耦合、易测试、SEO 友好、RESTful 实战指南
  • 远期合约和期权合约的区别是什么?
  • 2025年国内数字化档案管理软件选型速览
  • 基于FPGA的雷达信号处理设计工具包分享
  • 基于MATLAB的多机器人编队控制系统设计与实现