git 查看修改明细_一些使用git的小技巧

是谁动了我的代码

谁动了我的代码?

aff3708c6ac21dcda1977e5297b30a16.png

谁的 bug 指到了我的头上?

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

git blame -L 10,12 package.jsongit 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 -sngit 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 来全局搜索。

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

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

grep -rn grep -rn  --exclude config.js --exclude-dir node_modulesgit grep ag 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值