这些 git 高级命令你知道几个
大家好,我是 dom 哥。今天给大家分享几个 git 的高级应用。
git 是目前最流行的版本控制工具。git 玩的 6 不 6,轻则影响自己的开发幸福指数 ,重则影响下班时间 。本文介绍一些日常开发中常遇到的场景以及相关的 git 命令。
接下来就以前端流行的 mvvm 框架 vue 项目为例进行演示 。
查看 git log 统计信息
谁才是真正的卷王?这个命令给你答案!
git shortlog -sn

左侧是 commit 数量,右侧是提交者 name
自定义 git log 输出样式
这是素颜的 git log 样子。一个 commit 独占 7 行,一页也展示不了几个 commit 啊~

而且家人们谁懂啊,它这个日期格式把我看裂开了呀 Tue Dec 26 11:57:50 2023 +0800
先把日期格式调整的舒服一些:
git config --global log.date format:"%Y-%m-%d %X"
设置完之后日期格式是这样纸滴 2023-12-26 11:57:50
再来一串魔法设置 git log 输出的信息格式:
git config --global format.pretty "%C(auto)%h %s %C(italic dim white)%cn<%ce>[%cd]%Creset%C(auto)%d%Creset%n"
这是化妆后 git log 的样子。一行一个 commit,简直不要太清爽~

偷偷撤销提交记录的某次 commit
常在河边走,哪有不湿鞋。谁还没有提交过一个不该提交的 commit 呢,还 push 到远端了,怎么办?怎么办?
git reset ?这会把某个 commit 之后的提交全干掉啊,不行,不行
用下面这个命令,就可以悄无声息的把某个 commit 摘掉了
git rebase -i --onto commit-ish^ commit-ish
但事情没那么简单。此时只是本地的提交记录被纠正了,远端的还没改变呢。你需要 git push!然而在 rebase 之后 git push,一定会被 reject,会报类似下面的错误信息

千万别 git pull 哦!!!因为此时当前分支的本地和远端已经产生了分歧,接下来就是决定谁覆盖谁的时刻。
如果 git pull,那就是远端覆盖本地,上面的 rebase 操作白干!
如果想本地覆盖远端,只能 git push --force,加上 --force 强推到远端!推上去远端提交记录就和本地一样啦。
但是,实际操作起来肯定不会很顺利,可能有一长串的 commit 需要确认,可能会出现大量的冲突文件,可能需要其他协作者删掉本地的分支重新迁出。
删除远程分支
删除有风险,操作需谨慎。千万别手抖!
git push -d origin <branch>
批量删除本地分支和远端分支
git branch | grep 'dombro_' | xargs git push -d origin
git branch | grep 'dombro_' | xargs git branch -d
当前分支名称
git rev-parse --abbrev-ref HEAD
这通常在 shell 脚本里会用到!
清理已删除的本地远程引用 ️
git fetch -p
为什么要清理?我也不晓得
查看一个文件都哪些人编辑过
git log --pretty=format:"%an" <file> | sort -u
为什么要看这个,就是想看看
查看某个文件每一行都是谁写的
git blame --date=format:"[%Y-%m-%d %X]" <file>
这个太重要啦,bug来了想把锅甩出去,得第一时间找到 TMD 这行代码谁写的。

但,正经人谁在命令行里看 blame 啊,这里就不得不推荐一个 vscode 插件 GitLens:

有了它,在 vscode 里 blame 简直不要太方便,再也不用愁找这行代码到底谁写的啦

某个文件冲突太多,想直接用线上的
git pull # 先拉最新的代码
git checkout origin/master -- <file>
话说你用的 git 冲突解决工具是什么?我先说 ♂️,webstorm 自带的 git 工具,比 vscode 的好用多了。
什么!把 .vscode,.idea,.DS_Store 推送上去了!
git rm --cached -r .vscode/ .idea/ .DS_Store/
别忘了 remove 完之后 commit 哦~
给当前项目单独设置 user name 和 email
git config user.name <name>
git config user.email <email>
可能我想在 github 上的项目的提交者信息是 DOM哥<dombro@qq.com>,但公司内的项目用 姓名<公司@邮箱.com> 会比较好一点。
git config 设置完之后信息会存在项目根目录 .git/config 中,跟随项目。实现不同项目的提交者信息各不相同 。
这些 git 高级命令你知道几个的更多相关文章
- Git / 程序员需要知道的12个Git高级命令
众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈.学习Git,首先当然是学习Git的基本工作流.相比于SVN等传统版本控制系统来说,Git是专为分布式版本控制而生的强 ...
- 你需要知道的12个Git高级命令
众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈.学习Git,首先当然是学习Git的基本工作流.相比于SVN等传统版本控制系统来说,Git是专为分布式版本控制而生的强 ...
- 你需要知道的12个Git高级命令【转】
转自:http://www.linuxidc.com/Linux/2016-01/128024.htm 众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈.学习Git, ...
- 几个常用的 Git 高级命令
Git 是一款开源优秀的版本管理工具,它最初由 Linus Torvalds 等人开发,用于管理 Linux Kernel 的版本研发.相关的书籍和教程网上琳琅满目,它们多数都详细的介绍其基本的使用和 ...
- git 高级命令
git bisect 运行git bisect 通常是为了找出某个导致版本库产生倒退或bug的特殊提交 例如:你的版本库已经从一个已知的"好"状态过渡到一个已知的"坏&q ...
- [翻译] 10 个实用的 Git 高级命令
1. 输出最后一次提交的改变 这个命令,我经常使用它 来发送其他没有使用 git 的人来检查或者集成所修改的.它会输出最近提交的修改内容到一个 zip 文件中. git archive -o ../u ...
- git高级命令
git reflog 显示所有branch的commit,包括commit和reset,以及已删除的commit.而git log只显示当前branch的commit,不包括已删除的commit gi ...
- git常用命令/git 部分高级命令备忘录
常用命令 克隆 - git clone git@gitee.com:niunafei1/git_learning.git git 创建分支 - git checkout -b dev git 切换分 ...
- Git版本控制:Git高级教程
http://blog.csdn.net/pipisorry/article/details/50669350 Git有很多命令行参数,使用起来非常方便.可以运行 man git log ,来看一下这 ...
- Git常用命令及使用,GitLab/GitHub初探,Git/Svn区别
Git安装配置及常用命令 0 Git本地分支管理 1 Git远程分支管理 2 Git Tag标签管理 3 Git Log日志 4 其它高级命令 5 常规使用及介绍 6 角色权限 7 分支定义 8 一般 ...
随机推荐
- 618京东到家APP-门详页反爬实战
一.背景与系统安全需求分析 1. 系统的重要性 上图所示是接口所属位置.对电商平台或在线商店而言,分类查商品都是很重要的,通过为用户提供清晰的商品分类,帮助他们快速找到所需产品,节省浏览时间,提升购物 ...
- FreeSWITCH容器化问题之rtp端口占用
操作系统 :CentOS 7.6_x64.debian 11 (bullseye,docker) FreeSWITCH版本 :1.10.9 Docker版本:23.0.6 FreeSWITCH容器化带 ...
- 【Flutter】如何优美地实现一个悬浮NavigationBar
[Flutter]如何优美地实现一个悬浮NavigationBar 最近写代码的时候遇到了一个如下的需求: 整体来说,底部的条是一个浮动的悬浮窗,有如下的三个按钮: 点击左边的要进入"主页& ...
- Python正则表达式——常用re正则表达式集合
文章目录 一.校验数字的表达式 二.校验字符的表达式 三.特殊需求表达式 一.校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^ ...
- 2023.09.29 入门级 J2 模拟赛 赛后总结(尝试第一篇总结)
T1:变换(change) 一道大水题. 赛场上想都没想就切掉了 不难发现,转换的过程只和a 和b 的二进制位有关,且不同二进制位之间无关.我们可以将a 和b 转化为二进制表示,每一位分别判断,如果这 ...
- 如何查询4GL程序中创建的临时表中的数据
前提:将dba_segments这个表的select权限授权给各个营运中心(即数据库用户) ①.用sys账号以dba的权限登录数据库 <topprod:/u1/topprod/tiptop> ...
- Java 位运算的解读 & | ^ ~ << >>
Java中的位运算包括以下几种: 按位与(&):对应位上,如果两个数都是1,则结果为1,否则为0. int a = 3; // 二进制 0011 int b = 5; // 二进制 0101 ...
- junit4单元测试报错Invalid project specified
junit4单元测试报错Invalid project specified. 前天在进行单元测试的时候出现了Invalid project specified的报错查了一下发现是项目名字的问题.项目名 ...
- 一场3天前的cf
啊 这次的cf其实水的(指前4题) 题面就不给了awaT1其实就是一个贪心,其实手模一下就好了.可以发现,先让小的那个变大,然后在后面一直让小的加上大的统计一下次数就是答案了.因为如果是这样算的话,两 ...
- 【开源】给ChatGLM写个,Java对接的SDK
作者:小傅哥 - 百度搜 小傅哥bugstack 博客:bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 大家好,我是技术UP主小傅哥. 清华大学计算机系的超大规模训练模型 Cha ...