相见恨晚!Git 这些功能太好用了!
作为一名开发者,想必绝大多数同学都无法绕开 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 公司工作经验,先后从事过计算机视觉、推荐系统、后端、数据等相关工作。如果同学们在升学考研、职业规划、高考志愿、简历优化、技术学习等方面有困惑,欢迎大家前来咨询!
版权声明: 本文为 InfoQ 作者【Jackpop】的原创文章。
原文链接:【http://xie.infoq.cn/article/d143f645ab403714d63102b35】。文章转载请联系作者。
评论