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


参考


相关文章
|
6月前
|
存储 XML Shell
Git笔记
Git笔记
43 0
|
6月前
|
Shell 开发工具 数据安全/隐私保护
git笔记
git笔记
58 0
|
Shell 网络安全 开发工具
git理解之超薄笔记
git理解之超薄笔记
79 1
git理解之超薄笔记
|
数据可视化 Shell 开发工具
深入Git-上篇
前言 作为一个开发者,想必大家都清楚Git。无论大家在工作中是使用命令行还是可视化工具来操作Git,应该都已经熟悉和掌握其基本的使用。而本系列文章的目的在于向大家介绍Git背后的基本原理,例如其如何实现不同版本的代码保存及版本切换。此外,还会向大家介绍一些好用的命令,解决在平常使用中的困惑。
|
存储 算法 开发工具
深入Git-中篇
前言 上篇文章深入Git-上篇我们介绍了Git的目录结构,对于仓库的核心实现objects我们选择先跳过了。本篇文章就主要讲讲objects,通过本篇文章可以了解Git的仓库存储,其版本的实现逻辑等。
|
存储 开发工具 git
GIT详细基础笔记(1)
GIT详细基础笔记
178 0
GIT详细基础笔记(1)
|
Unix Linux Shell
Git 版本控制,看这篇就够了 (一)
Git 版本控制,看这篇就够了 (一)
Git 版本控制,看这篇就够了 (一)
|
Shell 开发工具 git
关于Git,这篇文章还不够吗?
关于Git,这篇文章还不够吗?
|
开发工具 git
GIT详细笔记(2)
GIT详细笔记
92 0
GIT详细笔记(2)
|
开发工具 git
git ammend知识点小结
在实际使用git的过程中,难免会存在手误的场景,比如 git commit之后,发现提交的描述信息不太合适,想调整一下;或者发现本地有多个零碎未提交的commit,想合并成一个提交... 当我们出现这些需求场景的时候,可以考虑使用git commit --amend来实现
543 0
git ammend知识点小结