深入Git-下篇

简介: 前言在前面的几篇文章主要介绍了一些原理性的东西。本篇文章作为收尾,将介绍一些在日常工作中比较有用的命令以及解决一些经常出现的问题场景。大家可以结合git常用命令(熟练了就是高手)进行学习。

「这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战

前言


在前面的几篇文章主要介绍了一些原理性的东西。本篇文章作为收尾,将介绍一些在日常工作中比较有用的命令以及解决一些经常出现的问题场景。大家可以结合git常用命令(熟练了就是高手)进行学习。


Git命令


  1. 查看历史提交


git log # 查看历史提交摘要
git log --graph # 历史提交图谱
git log --stat <path> # (path)历史提交清单
git log -p <path> # (path)历史提交明细(文件)
复制代码

  1. 暂存当前修改(工作区+暂存区)


git stash # 暂存(一种栈结构的形式)
git stash -u # u表示untracked文件也暂存
git stash pop # 恢复修改(恢复栈尾内容)
复制代码

  1. 撤销commit(多用于某功能延后发版)


git revert <commitId> <commitId> # 撤销某些commit修改内容,将产生新的revert commitId
复制代码

  1. 提取其他分支的提交信息


git cherry-pick <commitId> <commitId> # 提取多个commit
git cherry-pick A..B # 提取(A,B]之间的commit(前开后闭)
git cherry-pick <commitId> -x # x表示在提交信息保存原始commitID
复制代码

  1. 提取他人修改内容(无法通过Git仓库同步时)(不常用)


git format-patch -n <A> # 生成A及之前n-1个commit的patch文件((pre, A])
git format-patch <A> # 生成A以来的patch文件(不包含A)
git format-patch <A>..<B> # 生成(A,B]之间的patch文件
复制代码


git am <patch> # 应用patch(保留patch作者的提交信息无需再commit)(可以一次性应用多个)
git apply <patch> # 应用patch(不保留作者信息,需要重新add及commit)(可以一次性应用多个)
复制代码

  1. 查看操作记录


git reflog # 可查看本地一定期限的所有操作日志,据此可回退或前进版本
复制代码

  1. 找回丢失的修改


  • 如果曾经提交过commit,那么通过reflog就可以很轻松的切换到某个commit找回代码

  • 如果曾经执行过add,那么可通过.git下的objects文件夹找回修改对应的二进制文件(会很麻烦)
  • 如果既没有add也没commit,那么大概率是听天由命了

结语


本篇文章通过一些场景来学习日常工作中常用的某些命令,比较简单。至此Git系列的学习也要告一段落了。


参考

前言


在前面的几篇文章主要介绍了一些原理性的东西。本篇文章作为收尾,将介绍一些在日常工作中比较有用的命令以及解决一些经常出现的问题场景。大家可以结合git常用命令(熟练了就是高手)进行学习。


Git命令


  1. 查看历史提交


git log # 查看历史提交摘要
git log --graph # 历史提交图谱
git log --stat <path> # (path)历史提交清单
git log -p <path> # (path)历史提交明细(文件)
复制代码

  1. 暂存当前修改(工作区+暂存区)


git stash # 暂存(一种栈结构的形式)
git stash -u # u表示untracked文件也暂存
git stash pop # 恢复修改(恢复栈尾内容)
复制代码

  1. 撤销commit(多用于某功能延后发版)


git revert <commitId> <commitId> # 撤销某些commit修改内容,将产生新的revert commitId
复制代码

  1. 提取其他分支的提交信息


git cherry-pick <commitId> <commitId> # 提取多个commit
git cherry-pick A..B # 提取(A,B]之间的commit(前开后闭)
git cherry-pick <commitId> -x # x表示在提交信息保存原始commitID
复制代码

  1. 提取他人修改内容(无法通过Git仓库同步时)(不常用)


git format-patch -n <A> # 生成A及之前n-1个commit的patch文件((pre, A])
git format-patch <A> # 生成A以来的patch文件(不包含A)
git format-patch <A>..<B> # 生成(A,B]之间的patch文件
复制代码


git am <patch> # 应用patch(保留patch作者的提交信息无需再commit)(可以一次性应用多个)
git apply <patch> # 应用patch(不保留作者信息,需要重新add及commit)(可以一次性应用多个)
复制代码

  1. 查看操作记录


git reflog # 可查看本地一定期限的所有操作日志,据此可回退或前进版本
复制代码

  1. 找回丢失的修改

  • 如果曾经提交过commit,那么通过reflog就可以很轻松的切换到某个commit找回代码

  • 如果曾经执行过add,那么可通过.git下的objects文件夹找回修改对应的二进制文件(会很麻烦)

  • 如果既没有add也没commit,那么大概率是听天由命了

结语


本篇文章通过一些场景来学习日常工作中常用的某些命令,比较简单。至此Git系列的学习也要告一段落了


参考


相关文章
|
机器学习/深度学习 存储 编解码
自编码器模型详解与实现(采用TensorFlow2实现)
自编码器的基本构建块是编码器和解码器。编码器负责将高维输入减少为一些低维潜(隐)变量。解码器是将隐变量转换回高维空间的模块。本文对自编码器的原理进行详解,同时使用tensorflow2实现自编码器。
1992 0
自编码器模型详解与实现(采用TensorFlow2实现)
|
机器学习/深度学习 算法 TensorFlow
机器学习算法简介:从线性回归到深度学习
【5月更文挑战第30天】本文概述了6种基本机器学习算法:线性回归、逻辑回归、决策树、支持向量机、随机森林和深度学习。通过Python示例代码展示了如何使用Scikit-learn、statsmodels、TensorFlow库进行实现。这些算法在不同场景下各有优势,如线性回归处理连续值,逻辑回归用于二分类,决策树适用于规则提取,支持向量机最大化类别间隔,随机森林集成多个决策树提升性能,而深度学习利用神经网络解决复杂模式识别问题。理解并选择合适算法对提升模型效果至关重要。
385 4
|
12月前
|
监控 安全 Linux
RHEL 环境下 Subversion 服务器部署与配置
【10月更文挑战第18天】在RHEL环境下部署Subversion服务器需依次完成安装Subversion、创建版本库、配置服务器、启动服务、客户端连接及备份维护等步骤。确保遵循安全最佳实践,保障数据安全。
245 1
|
6月前
|
NoSQL 应用服务中间件 Redis
Docker 常用命令整理
Docker 常用命令整理
156 1
|
8月前
|
机器学习/深度学习 算法 数据挖掘
解析静态代理IP改善游戏体验的原理
静态代理IP通过提高网络稳定性和降低延迟,优化游戏体验。具体表现在加快游戏网络速度、实时玩家数据分析、优化游戏设计、简化更新流程、维护网络稳定性、提高连接可靠性、支持地区特性及提升访问速度等方面,确保更流畅、高效的游戏体验。
191 22
解析静态代理IP改善游戏体验的原理
|
11月前
|
设计模式 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用JavaScript,打造智能交互体验!
【10月更文挑战第30天】前端开发领域充满了无限可能与创意,JavaScript作为核心语言,凭借强大的功能和灵活性,成为打造智能交互体验的重要工具。本文介绍前端大牛如何利用JavaScript实现平滑滚动、复杂动画、实时数据更新和智能表单验证等效果,展示了JavaScript的多样性和强大能力。
253 4
|
Java Maven
SpringMVC常用Maven POM.xml依赖包片段
SpringMVC常用Maven POM.xml依赖包片段
|
数据可视化 算法 Java
了解go语言运行时工具的作用
【5月更文挑战第16天】本文简介`runtime`库提供系统调用包装、执行跟踪、内存分配统计、运行时指标和剖析支持。`internal/syscall`封装系统调用,保证uintptr参数有效。`trace`用于执行跟踪,捕获各种事件,如goroutine活动、系统调用和GC事件。`ReadMemStats`提供内存分配器统计。`metrics`接口访问运行时定义的度量,包括CPU使用、GC和内存信息。`coverage`支持代码覆盖率分析,`cgo`处理C语言交互,`pprof`提供性能剖析工具集成。这些功能帮助优化和理解Go程序的运行行为。
170 6
|
JavaScript
数据结构(用 JS 实现栈和队列【三种方式】)
数据结构(用 JS 实现栈和队列【三种方式】)
192 0