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

news2025/1/11 12:51:12

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

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

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

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

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

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

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

1. 编辑器

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

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

img

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

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

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

img

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

img

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

2. 配置文件

Git 有 3 个配置文件:

  • 系统上的每个用户单独一个,可以使用 --system 设置
  • 针对特定用户,可以使用 --global 进行设置
  • 用于正在使用 git 的仓库库,可以使用 --local 进行设置

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

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

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

img

3. 浅克隆

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

img

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

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

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

img

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

4. 简化Git状态

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

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

img

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

img

这样看是不是清晰多了?

  • M- 已被 git 跟踪的文件,现在已被修改
  • A- 已添加到暂存区的文件
  • ??- 未跟踪的文件/文件夹

5. 忽略

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

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

img

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

img

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

img

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

img

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

6. 查看Git日志

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

img

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

img

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

img

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

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

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

https://gitee.com/sharetech_lee/DevWeekly

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94785.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【经验帖】项目经理的核心价值:以目标为导向做正确的事

项目经理小李的年终汇报心路历程(心情犹如坐过山车,起起落落最后一蹶不振。) 汇报前: 终于到年终汇报的日子了,毕竟我负责的项目任务从来没有延期过,都是按时完成,这次肯定得加薪了&#xff01…

[附源码]Node.js计算机毕业设计公租房管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

module命名空间

为什么要有namespaced命名空间? 默认情况下,模块内部的action、mutation和getter都是在全局命名空间。 假设两个modules内部有同名的action、mutation和getter,则vuex会报错。 namespaced作用:保证模块内部的高封闭性,…

021 | 阴离子诱导的系列双核镝配合物的合成及磁性质 | 大学生创新训练项目申请书 | 极致技术工厂

研究目的 近十几年来,随着科技的飞速发展,单分子磁体材料涉及的应用领域越来越宽广。众所周知,单分子磁体材料作为信息存储的基础对信息产业的发展具有一定的意义。此外,单分子磁体在超高密度储存、自旋电子器件、量子计算机等领域…

旅游住宿网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 网站前台:网站介绍、帮助信息、旅游资讯。景点信息、酒店信息 管理员功能: 1、管理网站介绍、帮…

day22【代码随想录】在每个树行中找最大值、填充每个节点的下一个右侧节点指针、二叉树的最大深度、二叉树的最小深度

文章目录前言一、在每个树行中找最大值(力扣515)二、填充每个节点的下一个右侧节点指针(力扣116)三、二叉树的最大深度(力扣104)1、非递归求解2、递归求解四、 二叉树的最小深度(力扣111&#x…

【前端开发学习】4.JavaScript

文章目录1 JavaScript1.1 代码位置1.2 存在形式1.3 注释1.4 变量1.5 字符串类型案例:走马灯1.5 数组案例:动态数据1.6 对象(字典)案例:动态表格1.7 条件语句1.8 函数2 DOM2.1 事件绑定1 JavaScript 一门编程语言&…

第二证券|主力加仓电子、电气设备等行业 北向资金连续2日净流入

沪深两市股市涨跌互现,上证指数早盘震动下探,午后一度回升,尾盘再度回落;深证成指早盘探底回升,午后震动上扬,尾盘有所回落;创业板指早盘窄幅震动,午后震动上扬;科创50指…

D. Say No to Palindromes(构造 + 前缀和)

Problem - 1555D - Codeforces 如果这个字符串不包含一个长度至少为2的子串,我们就称它为美丽的字符串,这是一个回文。回顾一下,回文是指从第一个字符到最后一个字符以及从最后一个字符到第一个字符的读法相同的字符串。例如,字符…

京东物流 × StarRocks : 打造服务分析一体化平台Udata

作者:张栋,京东物流集团数据专家 京东集团 2007 年开始自建物流,2017 年 4 月正式成立京东物流集团,2021 年 5 月,京东物流于香港联交所主板上市。京东物流是中国领先的技术驱动的供应链解决方案及物流服务商&#xff…

Linux内核

内核属于操作系统的核心部分,它具有操作系统基本的功能,主要负责管理系统的内存、进程、设备驱动程序、文件系统和网络接口,因此,操作系统的性能和稳定性由内核决定。 1、内存管理 进程对内存的使用 计算机中所有要执行的程序都必…

大厂10年经验,我对Java高并发问题方案的总结,堪称教科书级

作为一个 Java 开发人员,多线程是一个逃不掉的话题,不管是工作还是面试,但理解起来比较模糊难懂,因为多线程程序在跑起来的时候比较难于观察和跟踪。 搞懂多线程并发知识,可以在面试的时候和周围人拉开差距&#xff0…

流媒体:依托于声网的连麦解决方案

一、背景 近些年,直播连麦这把火在流媒体领域整整燃烧了 6 年。从刚开始的简单探索,到现在的成熟全链路方案,不得不说日益增长的激烈竞争,已将让原本的蓝海领域变成了深海互搏。在这样的大环境下,是否意味着小厂将再也…

分布式系统(P2P Lookup)

文章目录P2P 系统NapsterBitTorrentGnutellaChordConsistent HashingSimple Key LocationScalable Key LocationKademliaRouting TableKademlia’s RPCAdaptabilityDistributed Hash TableP2P 系统 Peer to peer 系统: 每个结点在连接上是互联的,在功能…

Spring MVC: 一种简洁且强大的Web应用框架

⭐️前言⭐️ 这篇文章介绍Spring MVC,Spring MVC是现在基本所有Java程序的主流开发框架,这篇文章主要介绍三部分内容: 实现用户和程序的映射(在浏览器输入URL地址之后,能够在程序中匹配到相应方法)。服务器端得到用户的请求参数…

c语言笔记1 输入和输出注意事项,常量 变量 static

输出:printf c的编译器不会检测格式串中转换说明的数量和数据类型是否和后面的变量一致。转换说明的数据类型与实际数据类型不一致时,产生无意义的值。 int 类型的变量length,值为9,输出时将类型写为float或double,输…

【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型

InstructGPT:遵循人类反馈指令来训练语言模型《Training language models to follow instructions with human feedback》论文地址:https://arxiv.org/pdf/2203.02155.pdf 相关博客 【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈…

联想小新pro13 卡顿解决办法

问题 本人电脑型号是 联想小新 pro13 2020 i7 才用了两年多,变得巨卡无比 ctlshiftesc打开任务管理器 cpu利用率才30%多 打字就一顿一顿的出结果 浏览网页也卡的掉帧,更不用说打游戏了 真的很无语,重装了系统也没啥用 思路 在网上搜了一圈…

Linux 网络基础

目录 一.网络 1.重新看待计算机结构 2.几种网络 二.协议 1.协议分层 2.OSI七层模式 3.TCI/IP五层(或四层)模型 三.网络传输 1.网络和操作系统之间的关系 2.网络传输流程图 3.数据包封装和应用 前言:这一篇大体介绍一下网络的一些基础知识。 一.网络 1.重…

do while语句

上次讲了while语句,这次讲一下do while语句。 do...while 循环是 while 循环的变体。在检查while()条件是否为真之前,该循环首先会执行一次do{}之内的语句,然后在while()内检查条件是否为真,如果条件为真的话,就会重复…