深入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系列的学习也要告一段落了


参考


相关文章
|
3月前
|
存储 缓存 开发工具
【GIT 第一篇章】认识一下GIT
Git是一款分布式版本控制系统,以高效敏捷著称,适用于从小到大的各类项目管理。其核心特性包括分布式的仓库设计,让每位开发者都能拥有完整的项目历史记录;版本控制功能追踪文件变化并保存每次提交的快照;以及强大的分支管理,支持实验性开发而不干扰主分支。Git的工作流程涉及初始化仓库、暂存更改、提交版本及查看历史等步骤。Git具备快速高效的数据处理能力、保证版本完整性的哈希机制、多协议支持和缓存机制,广泛应用于软件开发、项目管理和学术研究领域。与集中式版本控制系统SVN相比,Git在系统架构、数据存储、分支管理、性能效率和安全性等方面表现出更强的灵活性和高效性,尤其适合分布式团队和大规模项目。
33 0
|
6月前
|
存储 XML Shell
Git笔记
Git笔记
44 0
|
6月前
|
Shell 开发工具 数据安全/隐私保护
git笔记
git笔记
58 0
|
开发工具 git Ruby
说一说git
说一说git
75 0
|
数据可视化 Shell 开发工具
深入Git-上篇
前言 作为一个开发者,想必大家都清楚Git。无论大家在工作中是使用命令行还是可视化工具来操作Git,应该都已经熟悉和掌握其基本的使用。而本系列文章的目的在于向大家介绍Git背后的基本原理,例如其如何实现不同版本的代码保存及版本切换。此外,还会向大家介绍一些好用的命令,解决在平常使用中的困惑。
|
存储 算法 开发工具
深入Git-中篇
前言 上篇文章深入Git-上篇我们介绍了Git的目录结构,对于仓库的核心实现objects我们选择先跳过了。本篇文章就主要讲讲objects,通过本篇文章可以了解Git的仓库存储,其版本的实现逻辑等。
|
存储 开发工具 git
GIT详细基础笔记(1)
GIT详细基础笔记
178 0
GIT详细基础笔记(1)
|
Shell 开发工具 git
关于Git,这篇文章还不够吗?
关于Git,这篇文章还不够吗?
|
安全 Java 网络安全
|
安全 Shell Linux
Git——简述与安装
Git——简述与安装
Git——简述与安装

相关实验场景

更多