写点什么

相见恨晚!Git 这些功能太好用了!

作者:Jackpop
  • 2022-12-16
    浙江
  • 本文字数:1920 字

    阅读完需:约 6 分钟

程序员宝藏库https://gitee.com/sharetech_lee/CS-Books-Store


作为一名开发者,想必绝大多数同学都无法绕开 Git。


作为一款工具,我认为它和 word、powerpoint、Excel 这些办公工具一样。


对于一部分同学,会一些基本的用法,能够解决日常工作中遇到的简单问题。对一部分同学,能够深入了解并学习这款工具,在工作中很多方面能够更高效的处理面对的问题。


git 也是这样,很多同学可能大多数时候用到的就是克隆、提交、推送、合并这些基础操作,每天按部就班、反反复复的执行这几个命令,也没有考虑过如何更加高效的使用。


但是,如果仔细琢磨,会发现 git 使用过程中有很多可以提升效率的地方,即便是很简单的场景也可以用到。


今天,就来给大家介绍一些 Git 使用过程中非常好用的「奇技淫巧」!

1. 编辑器

git commit 应该大多数同学都会用到,这是一个非常基础的操作。


当我们提交的信息比较少时,可以这样:



然而,当写的提交信息比较长时就没这么简单了。需要带上标题、描述等。这时候,用编辑器会更加合适。


但是,vim 时 git 默认的文本编辑器,作为初学者,git 还没熟练呢,再加上 vim 无疑是增大了学习成本。


这时候我们可以更改默认编辑器,可以执行下面命令:



确保在终端中运行 <editor-name> 能够打开编辑器,例如 vim 、 nano 或 VS Code。



对于 VS Code,需要添加另一个参数来指示 git 等待当前编辑器窗口关闭再启动新窗口。

2. 配置文件

Git 有 3 个配置文件:


  • 系统上的每个用户单独一个,可以使用 --system 设置

  • 针对特定用户,可以使用 --global 进行设置

  • 用于正在使用 git 的仓库库,可以使用 --local 进行设置


这些文件相互覆盖,即,当使用 --local 设置的变量将覆盖全局配置,而后者又将覆盖系统配置。


我们在设置名称、电子邮件或编辑器等内容时使用 —global,以便它反映在我们的每个 git 存储库中。


要检查当前的设置,可以运行:


3. 浅克隆

如果你正在合作开发一个需要时间和内存来克隆的大型代码仓库,那么浅克隆会非常有帮助。



上图中,time 可以用来检查一个命令运行了多长时间,du 可以用来检查一个文件夹消耗了多少内存。


从上面我们可以看出,克隆 fastai repo 大约需要 28 秒、902M 内存。


现在让我们尝试只克隆最新的提交:



克隆不到 2 秒,仅消耗 1.1M 内存。

4. 简化 Git 状态

git status 是一个非常有用的命令,用于检查存储库中所有文件的状态,它们是否未跟踪、已修改、暂存等。


但是,如果你有很多文件,例如,在重新格式化一堆文件的存储库中运行预提交,输出可能会变得冗长:



对于这种问题,我们可以使用 --short 或 -s 来简化输出:



这样看是不是清晰多了?


  • M- 已被 git 跟踪的文件,现在已被修改

  • A- 已添加到暂存区的文件

  • ??- 未跟踪的文件/文件夹

5. 忽略

假设你正在从事深度学习项目,并且你有包含数据的 train_images 和 test_images 文件夹,在提交仓库时,肯定不希望把这些数据一起提交上去吧?


但是,在名为 assets 的文件夹中也有图像,其中包含要在 GitHub README 中显示的图像:



针对这种问题 ,我们可以把要忽略的内容添加到.gitignore 文件中,这样在提交时就会被忽略:



但是,可能在一堆不同的位置有图像,这样可以改用正则表达式:



这会递归地搜索文件夹和子文件夹中的图像并忽略所有这些图像。 但是,请记住我们不想忽略文件夹 assets 中的图像。



我们可以在 .gitignore 中使用 ! 排除掉不需要被忽略的内容。

6. 查看 Git 日志

如果你想查看有限数量的提交,你可以使用 -<n> 参数:



我们还可以使用 --since 或 --until 根据时间段过滤掉不需要看的提交信息:



除此之外,还可以使用 --grep 或 —author 来搜索指定提交:



从前面介绍的 6 个 Git 用法可以看出,它们并不是非常高深的用法,使用难度也不高。之所以有些同学会用、有些同学不会用,主要因为信息差,或者没有考虑到这些场景。


然而,通过这些「奇技淫巧」可以大大提升我们使用 Git 的体验,也能够极大提高工作效率。


建议大家有空可以多浏览 Github,有很多好用的开源免费工具。但是,目前 Github 上项目多如牛毛,而且刷榜现在也非常严重,想要找到优质的项目变得越来越难。这里,给大家推荐 Github 上一个非常不错的项目《DevWeekly》,这个项目每周都会精挑细选一些优质的开源项目,涵盖 C++、JAVA、JavaScript、Python、Go 等不同编程语言。此外,还有一些开源工具、优秀的技术文章,而且考虑到很多同学访问 Github 不方便的问题,我还特意同步到了 Gitee,建议大家看一下:


https://gitee.com/sharetech_lee/DevWeekly


hello,大家好,我是 Jackpop,重点大学本科毕业后保送到哈工大计算数学专业读研,有多年国内头部互联网、IT 公司工作经验,先后从事过计算机视觉、推荐系统、后端、数据等相关工作。如果同学们在升学考研、职业规划、高考志愿、简历优化、技术学习等方面有困惑,欢迎大家前来咨询!

发布于: 刚刚阅读数: 3
用户头像

Jackpop

关注

还未添加个人签名 2020-09-16 加入

公众号:平凡而诗意,微信:code_7steps,全网粉丝超20万,技术进阶、优质资源、实用工具,欢迎关注!

评论

发布
暂无评论
相见恨晚!Git这些功能太好用了!_Jackpop_InfoQ写作社区