千家信息网

Git有哪些实用技巧

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"Git有哪些实用技巧",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Git有哪些实用技巧"吧!将几个commit压缩成一个⚠️ 这里有一点
千家信息网最后更新 2026年11月03日Git有哪些实用技巧

本篇内容主要讲解"Git有哪些实用技巧",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Git有哪些实用技巧"吧!

将几个commit压缩成一个

⚠️ 这里有一点要特别注意的是:rebase会导致新的commit节点产生,所以切记不要对多人共用的远端分支进行rebase。

rebase -i 是个很实用且应用广泛的工具,希望大家都学会它的使用。它还可以用来修改commit信息,抛弃某些commit,对commit进行排序等等。具体命令如下,操作方式跟动图一致,都是在vim里面进行编辑。这里不展开,感兴趣的同学可以自己操作一下。

# Commands: # p, pick  = use commit # r, reword  = use commit, but edit the commit message # e, edit  = use commit, but stop for amending # s, squash  = use commit, but meld into previous commit # f, fixup  = like "squash", but discard this commit's log message # x, exec  = run command (the rest of the line) using shell # d, drop  = remove commit # l, label 

另外如果要合并的是最近的几个commit,我们还可以用git reset --soft HEAD~3 && git commit -m 'xxx'来实现。对这个有问题的同学可以参照Git内部原理强调的可视化方法思考一下。

找回丢失的commit节点或分支

像上一步rebase后发现不符合预期,如何恢复?不小心删除了一个分支,如何找回?

"学会这个技能,你的同事会请你喝奶茶的,而且说不定还能收获妹子。" —— 来自往期课程的某位同学

主要思路为:找到要返回的commit object的哈希值,然后执行git reset恢复。

我们知道Git的出现就是为了尽量保证我们的操作不被丢失,在Git内部原理中我们讲过,git object一旦被创建,就不可变更,所以只要找到它对应的哈希值,就能找回。但是ref呢?在Git内部原理中我们也讲过,它是一个可变的指针,比如说你在master中提交了一个commit,那当前的master这个ref就会指向新的commit object的哈希值。reflog 就是将这些可变指针的历史给记录下来,可以理解成 ref的log,也可以理解成 版本控制的版本控制。

获得一个干净的工作空间

当我们实验一种思路,或者跟朋友讲代码时,我们可能会随意的修改代码。而当我们回到正常的开发时,我们需要一个干净的工作目录,即保证目前工作目录跟Git最后一次commit的文件是一致的。我们可以怎么做?

尽量少用会丢失文件的操作,除非你能够确定不再需要这些文件。

修改最近一个commit

commit完发现有一些临时的log忘记去掉?有一些文件忘记添加?commit信息出现错别字?

也可以使用 git reset HEAD~,然后执行你需要的修改,再commit即可,同上面介绍的命令效果是相同的。

提交一个文件中的部分修改

Git interactive add 还有很多功能,也推荐大家有时间可以尝试一下。

禁止修改多人共用的远端分支

如果一条远端分支有多人共用,那么不要在上面执行reset、rebase等会修改这条分支已经存在的commit object的命令。

具体的解释参照这篇文章 Rebase and the golden rule explained 。

撤销一个合并

如果是一个本地分支,仅需git reset --hard <合并前的SHA1>即可。

如果这个分支已经被推送到远端,比如说合并进master,发到线上才发现有bug需要回滚。这时分支有可能已经被其他人所使用,根据"禁止修改多人共用的远端分支",你需要执行git revert -m 1 <合并的SHA1>,新增一个revert节点,如下图中的E'。

但要注意不要在原特性分支继续开发,而应该删除原来的分支,从E'节点拉出新分支做bug修复等。

如果在原特性分支上继续开发,则在合并回master的时候需要做一次revert操作revert掉E'节点,变成E‘’(如下图),不然很容易出现丢失文件等问题。具体原因分析参照分支合并中的总结。

从整个历史中删除一个文件

代码要开源了,但发现其中包括密钥文件或内网ip怎么办?

git filter-branch --tree-filter 'rm -f passwords.txt' HEAD

可以使用filter-branch命令,它的实现原理是将每个commit checkout出来,然后执行你给它的命令,像上面的rm -f passwords.txt,然后重新commit回去。

⚠️ 这个操作属于高危操作,会修改历史变更记录链,产生全新的commit object。所以执行前请通知仓库的所有开发者,执行后所有开发者从新的分支继续开发,弃用以前的所有分支。

其他好用的命令

下面这些命令也是比较实用的命令,感兴趣的同学可以自己学习一下。

  • git bisect 二分查找出现问题的变更节点,比如你发现当前提前下测试是不通过的,但HEAD~10(10个提交前)的测试是可以通过的,就可以用git bisect 来帮你定位到出现问题的变更点。

  • git blame 查看某行代码最后是谁修改的。

  • git show-branch 直观的展示多条分支间的关系。

  • git subtree 拆分或合并仓库。

到此,相信大家对"Git有哪些实用技巧"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

分支 命令 文件 实用 节点 开发 代码 原理 同学 多人 问题 实用技巧 技巧 兴趣 历史 哈希 学习 工作 干净 一致 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司 亿人帮互联网科技有限公司 科技互联网公司装修 朗新科技与工业互联网 壹账通互联网科技 壕鑫互联网络科技 齐家互联网科技有限公司 科技与互联网的利与弊 北京三清互联网科技 隆华科技工业互联网 随着互联网科技发展 互联网时代科技改变生活 互联网为啥属于高科技 河南猎农互联网科技有限公司 梅州GM互联网络科技有限公司 产业互联网科技服务公司 35岁以上互联网科技行业 上海乐五互联网科技有限公司 信承诺互联网科技有限公司 互联网科技平台产品运营 新华互联网科技学校 科技互联网产品 上海挚品互联网科技 太原新华互联网科技学校怎么样 上海电发互联网科技有限公司 顶级互联网科技成果有哪些 四川慕妮娅互联网科技有限公司 南京一网一红互联网科技有限公司 东风日产互联网科技公司叫什么 互联网科技创业有什么好项目
0