Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

学好Git 拒绝背锅:2020-4-10 #20

Open
jsonz1993 opened this issue Jul 27, 2021 · 0 comments
Open

学好Git 拒绝背锅:2020-4-10 #20

jsonz1993 opened this issue Jul 27, 2021 · 0 comments

Comments

@jsonz1993
Copy link
Owner

本文为博客迁移过来,原文链接: 学好Git 拒绝背锅:2020-4-10

仓库demo

今天下午同事找到我,说有个锅要我背一下,在vsc的gitLens看到某个文件里面的某行代码是我写的。

但是我有印象这些代码是我复制过来的,大概的场景是这样:

先有个a文件,写了某些代码,后面发现说a文件的某些代码应该归到b文件里面,所以就把这块代码移过去,这时候整个仓库就只有b文件出现这些代码,看文件历史的时候就会觉得这些代码是我写的...

这时候我们就需要找一下这些代码是从哪里copy过来的

git blame
git blame [<options>] <file> 可以查看某文件的每一行是什么时候谁修改的,类似 vsc的gitLens FILE HISTORY
这个命令可以加个 -C 的选项,Git 会分析你正在标注的文件, 并且尝试找出文件中从别的地方复制过来的代码片段的原始出处。

不过这个功能我没试过是有用的...比如这次就没有提示说这行代码是从哪里复制过来的

这时候我们就要用git的另一个搜索工具 git log

git log -S Text可以查看Text出现在哪些commit中,这就很有用了。

直接 git log -S "userName = 'jsonz1993'"查看发现在之前a同事提交过

git log -S "userName = 'jsonz1993'"

commit ac9390164c24e4abc60f65a5604a3e2cb1f3ad66 (HEAD -> master)
Author: jsonz1993 <[email protected]>
Date:   Thu Apr 9 17:08:16 2020 +0800

    把user信息都归到一起

commit ee7f357fa8a9b8eefc99e6f446bd983b7020ba34
Author: a同事 <[email protected]>
Date:   Thu Apr 9 17:06:08 2020 +0800

    添加userName

切换到 ee7f357f 再查看文件历史,确保没有丢错锅

git checkout ee7f357f; git blame a.js

^ee7f357 (a同事 2020-04-09 17:06:08 +0800 1) export const userName = 'jsonz1993'

查看之后发现这个文件只有a同事改过...成功甩锅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant