这个锅应该由谁来背
团队合作时,可以使用 git blame<file> 来定位代码的最后一次修改。
如果团队中有人对项目代码全部格式化,该命令就失去作用了,这时候可以使用另外一个命令,
git log -p <file>可以查看文件修改的历史明细。
git blame -L 10,12 package.json
git log -P 10,12 package.json
快速切换合并分支
当你工作时,我们经常使用 git checkout dev 和 git checkout master 来回切换开发分支与主分支。
这里有一个更简单的命令 git checkout -,表示切换到最近一次的分支。如果你在主分支上,想合并dev分支到主分支,可以使用命令git merge -
git checkout -
git merge -
统计项目提交情况
统计项目各个成员的提交情况
git shortlog -sn
git shortlog -sn --no-merges #不包含merge commit
快速定位提交
如果你的commit message比较规范,比如会关联issue或者任务或者bug信息,此时根据commit message快速定位提交,git log --grep "add"
如果你的commit message不规范,也可以通过查找关键字快速定位提交 git log -S "setTimeout",同时也可以通过作者信息辅助快速定位。
git log --since="0 am" # 查看今日提交
git log --author="xiaoxuguang" # 查看xiaoxuguang的提交
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>