十分钟了解 git 那些“不常用”命令(下)

简介: 本文主要是介绍 git 不常用 初期不太会用的命令,希望你看了能理解这些命令的使用,并在平时使用过程中一点点地刻意进行练习,逐步熟练并知道何时需要用到这些命令去解决你的问题。( 我也在不断熟练中)

二、git cherry-pick 选择


cherry-pick 可以将提交树上任何地方的提交记录取过来追加到 HEAD 上(只要不是 HEAD 上游的提交就没问题)。


git checkout master; git cherry-pick C2


下图中左、右两张图分别是执行代码前后的样子:


是不是有点眼熟:D 没错 这个和 rebase 的效果蛮像的,这两个命令都可以实现复制提交~

微信图片_20220414171736.jpg


三、git reset VS revert 回滚


git revert HEAD 是用一次新的 commit 来回滚之前的 commit,git reset 是直接向上移动分支,删除一些 commit 看上去像从未提交一样。这两者看似达到的效果是一样的,其实完全不同。


git reset HEAD~1git revert HEAD


如下所见,图 1 是初始状态(需要撤回 C2 提交),图 2 和图 3 是从图 1 分别执行 reset 和 revert 后的结果:


微信图片_20220414171910.png


•  reset执行后,master 分支移回到了 C1;现在我们的本地代码库根本就不知道有 C2 这个提交了
revert执行后,在我们要撤销的提交记录 C2 后面多了一个新提交 C2',而 C2' 引入了更改—— 这些更改是用来撤销 C2 这个提交的。也就是说 C2' 的状态与 C1 是相同的。

注意:
•  如果你已经 push 到线上代码库, reset 删除指定 commit 以后, 你 git push 可能导致很多冲突.但是 revert 并不会。•  如果此回退的分支合并主干分支时,reset 恢复部分的代码依然会出现在历史分支里,但是 revert 方向提交的 commit 并不会出现在历史分支里。


# 事例

reset后的123 merge了12345 还是12345

revert后的12345(-3) merge了12345 是12345(-3)


四、HEAD^n 和 HEAD~n 相对引用


HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。HEAD 总是指向当前分支上最近一次提交记录


(如果想看 HEAD 指向,可以通过 cat .git/HEAD 查看, 如果 HEAD 指向的是一个引用,还可以用 git symbolic-ref HEAD 查看它的指向。)


1. 基础使用:

•  使用 ^ 表示向上移动 1 个提交记录。n 表示第 n 个父提交,不填默认是 1(正上方)

•  使用 ~<num> 向上移动多个提交记录
~3


注意:操作符还支持链式操,如 HEAD^2~3^2.


延伸用法:移动分支:可以直接使用 -f 选项让分支指向另一个提交。


例如下面的命令会将 master 分支强制指向HEAD 的第 3 级父提交。


git branch -f master HEAD~3


这次主要就总结了这几种“不常用”git 命令,希望大家和我都可以多多练习,让他变成你需要时就可以自如使用的“常用”命令!

目录
相关文章
|
14天前
|
开发工具 git
git 常用命令
这些只是 Git 命令的一部分,Git 还有许多其他命令和选项,可根据具体需求进行深入学习和使用。熟练掌握这些命令能够帮助你更高效地管理代码版本和协作开发。
|
4月前
|
存储 开发工具 git
|
7天前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
19 3
|
4月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
72 0
|
1月前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
48 1
[Git]入门及其常用命令
|
2月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
135 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
1月前
|
开发工具 git 开发者
|
1月前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
47 0
|
3月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
3月前
|
机器学习/深度学习 Shell 开发工具
Python使用管道执行git命令报错|4-7
Python使用管道执行git命令报错|4-7