实用的 git 小技巧

时间: 2019-06-11阅读: 42标签: 技巧

前些月,写了一个关于 git 的表格,叫Git Cheat Sheet,现分享一些有用的小技巧,更多内容请移步,另有一个非常不错的关于 git 小技巧的项目 git-tips


是谁动了我的代码

谁动了我的代码?

谁的 bug 指到了我的头上?

团队合作时,经常会出现这样的问题。这时候可以使用 git blame <file> 来定位代码的最后一次修改。但是,有一个问题,这并不能看出本行代码以前的修改。比如项目组中某人对全部代码进行了格式化,git blame 就失去了作用。此时,可以与另一个有用的命令 git log -p <file> 结合使用,可以查看文件的更改历史与明细,最终找到这个锅究竟应该由谁来背。

git blame -L 10,12 package.json
git log -p -L 10,12:package.json


快速切换合并分支

当你经常工作于 A 与 B 两个分支,需要来回切。这时命令应该是 git checkout A,但这里有一个更简单的命令,git checkout -,表示切到最近的一次分支。如果你需要把 B 分支的内容合并过来,可以使用 git merge -。

题外话,cd - 代表进入最近目录,也相当实用。

git checkout -
git merge -


统计项目

统计项目各个成员 commit 的情况,比如你可以查看你自己的项目的 commit 数以及他人对你项目的贡献数

git shortlog -sn
git shortlog -sn --no-merges      # 不包含 merge commit


快速定位提交

如果你的 commit message 比较规范,比如会关联 issuse 或者当前任务或者 bug 的编号,此时根据 commit message 快速定位: git log --grep "Add"。

如果你的 commit message 不太规范,只记得改了哪几行代码,此时也可以根据每次提交的信息查找关键字,是 git log -S "setTimeout"。

同时,也可以根据作者,时间来辅助快速定位。

git log --since="0 am"         # 查看今日的提交
git log --author="shfshanyue"     # 查看 shfshanyue 的提交
git log --grep="#12"              # 查找提交信息中包换关键字的提交
git log -S "setTimeout"           # 查看提交内容中包换关机子的提交


快速定位字符串

如何查找包换关键字的全部文件?

使用 VS Code 可以全局搜索,使用 grep 也可以通过 grep -rn <keyword> 来全局搜索。

不过,它们也会连带搜索忽略文件,比如前端著名的两个文件夹 node_modules 和 public(dist/build)。虽然 grep 可以指定 --exclude 来忽略文件,不过 git 来的更方便一些。

这时,可以使用 git grep <keyword> 来解决这个问题,另外 ag 也可以解决这个问题。

grep -rn <keyword>
grep -rn <keyword> --exclude config.js --exclude-dir node_modules
git grep <keyword>
ag <keyword>

欢迎关注我的公众号山月行,在这里记录着我的技术成长


使用Js的一些小技巧

任何一门技术在实际中都会有一些属于自己的小技巧。同样的,在使用JavaScript时也有一些自己的小技巧,只不过很多时候有可能容易被大家忽略。而在互联网上,时不时的有很多同行朋友会总结

ES6常用的小技巧

ES6中常用的小技巧,如果能在实际项目中能使用到,必定事半功倍: 强制要求参数;强大的reduce;使用reduce同时实现map和filter;使用reduce取代map和filter

超实用的JQuery小技巧

JQuery是一个 JavaScript 库,她极大的简化了我们对 JavaScript 的编程。今天我们总结了下平常项目中用到的一些小技巧,仅供参考。

编程技巧:重构if...else if...else

新入职的公司,前人留下来一个项目,里面充斥着大量的if...else...,则倒是其次,主要连注释写的都很少。面对这样的已经上线的代码,我并没有想去重构他因为成本太高,只好鞭策自己不要写出这种代码

探讨Js奇技淫巧

Js 是一门灵活的语言(手动滑稽)。应该多学习一些奇技淫巧,因为很多奇技淫巧往往代表一些混合的知识,往往会有一些新奇的思考与体验(怎么我想不出来?)

11 种在大多数教程中找不到的JavaScript技巧

当我开始学习JavaScript时,我把我在别人的代码、code challenge网站以及我使用的教程之外的任何地方发现的每一个节省时间的技巧都列了一个清单。

Nginx的几个常用配置和技巧

文章列举了几个Nginx常见的,实用的,有趣的配置,希望看过之后能说一句:学到了!一个站点配置多个域名server_name 后跟多个域名即可,多个域名之间用空格分隔

无法忽视的Js技巧

在大家从事web前端的工作中,很容易忽视一些JavaScript的小技巧,今天为大家总结了一些容易被大家忽略的技巧,希望能够对大家有所帮助。

7个有用的Vue开发技巧

随着组件的细化,就会遇到多组件状态共享的情况,Vuex当然可以解决这类问题,不过就像Vuex官方文档所说的,如果应用不够大,为避免代码繁琐冗余,最好不要使用它

45个有用的JavaScript技巧,窍门和最佳实践

首次为变量赋值时务必使用var关键字:变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量。使用===取代==

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全