0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

7个实用的Git 小技巧

Linux爱好者 来源:Linux中国 作者:Rajeev Bera 2021-07-29 10:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

这些有用的小技巧将改变你在当前最流行的版本控制系统下的工作方式。

Git 是当前最流行最普遍的版本控制系统之一,它被应用于私有系统和公开网站上各种各样的开发工作。不论我变得对 Git 有多熟悉,似乎总有些功能等待着被发掘。下面分享下和 Git 相关的改变我工作方式的一些小技巧。

1、Git 中的自动纠错

我们每个人都不时在输入时犯拼写错误,但是如果你使能了 Git 的自动纠错功能,你就能让 Git 自动纠正一些输入错误的子命令。

假如你想用命令 git status 来检查状态,但是你恰巧错误地输入了 git stats。通常情况下,Git 会告诉你 ‘stats’ 不是个有效的命令:

$ git statsgit: ‘stats’ is not a git command. See ‘git --help’.The most similar command isstatus

为了避免类似情形,只需要在你的 Git 配置中使能自动纠错功能。

$ git config --global help.autocorrect 1

如果你只想对当前的仓库生效,就省略掉选项 --global。

这个命令会使能自动纠错功能。在相应的 Git 官方文档[1] 中可以看到这个命令的详细说明,但是试着敲一下上面的错误命令会使你对这个设置干了什么有个直观的了解:

$ git statsgit: ‘stats’ is not a git command. See ‘git --help’.On branch masterYour branch is up to date with ‘origin/master’.nothing to commit, working tree clean

在上面的例子中,Git 直接运行了它建议命令的第一个,也就是 git status,而不是给你展示它所建议的子命令。

2、对提交进行计数

需要对提交进行计数的原因有很多。例如,一些开发人员利用提交计数来判断什么时候递增工程构建序号,也有一些开发人员用提交计数来对项目进展取得一个整体上的感观。

对提交进行计数相当简单而且直接,下面就是相应的 Git 命令:

$ git rev-list --count branch-name

在上述命令中,参数 branch-name 必须是一个你当前仓库里的有效分支名。

$ git rev-list –count master32$ git rev-list –count dev34

3、仓库优化

你的代码仓库不仅对你来说很宝贵,对你所在的组织也一样。通过少数几个惯例你就能使自己的仓库整洁并且保持最新。使用 .gitignore 文件[2] 就是这些最好的惯例之一。通过使用这个文件你可以告诉 Git 不要保存一些不需要记录的文件,如二进制文件、临时文件等等。

当然,你还可以使用 Git 的垃圾回收来进一步优化你的仓库。

$ git gc --prune=now --aggressive

这个命令在你和你的团队经常使用 pull 或者 push 操作的时候很有帮助。

它是一个内部工具,能清理掉你的仓库里没法访问或者说“空悬”的 Git 对象。

4、给未追踪的文件来个备份

大多数时候,删除所有未追踪的文件是安全的。但很多时候也有这么一种场景,你想删掉这些未追踪的文件同时也想做个备份防止以后需要用到。

Git 组合一些 Bash 命令和管道操作,可以让你可以很容易地给那些未追踪的文件创建 zip 压缩包。

$ git ls-files --others --exclude-standard -z | xargs -0 tar rvf ~/backup-untracked.zip

上面的命令就生成了一个名字为 backup-untracked.zip 的压缩包文件(当然,在 .gitignore 里面忽略了的文件不会包含在内)。

5、了解你的 .git 文件夹

每个仓库都有一个 .git 文件夹,它是一个特殊的隐藏文件夹。

$ ls -a. … .git

Git 主要通过两个东西来工作:

当前工作树(你当前检出的文件状态)

你的 Git 仓库的文件夹(准确地说,包含版本信息的 .git 文件夹的位置)

这个文件夹存储了所有参考信息和一些其他的如配置、仓库数据、HEAD 状态、日志等更多诸如此类的重要细节。

一旦你删除了这个文件夹,尽管你的源码没被删,但是类似你的工程历史记录等远程信息就没有了。删除这个文件夹意味着你的工程(至少本地的复制)不再在版本控制的范畴之内了。这也就意味着你没法追踪你的修改;你没法从远程仓拉取或推送到远程仓了。

通常而言,你需要或者应当对你的 .git 文件夹的操作并不多。它是被 Git 管理的,而且大多数时候是一个禁区。然而,在这个文件夹内还是有一些有趣的工件,比如说当前的 HEAD 状态在内的就在其中。

$ cat .git/HEADref: refs/heads/master

它也隐含着对你仓库地描述:

$ cat .git/description

这是一个未命名的仓库;通过编辑文件 ‘description’ 可以给这个仓库命名。

Git 钩子文件夹连同一些钩子文件例子也在这里。参考这些例子你就能知道 Git 钩子能干什么了。当然,你也可以 参考这个 Seth Kenlon 写的 Git 钩子介绍[3]。

6、浏览另一个分支的文件

有时,你会想要浏览另一个分支下某个文件的内容。这其实用一个简单的 Git 命令就可以实现,甚至都不用切换分支。

设想你有一个命名为 README.md[4] 的文件,并且它在 main 分支上。当前你正工作在一个名为 dev 的分支。

用下面的 Git 命令,在终端上就行。

$ git show main:README.md

一旦你执行这个命令,你就能在你的终端上看到 main 分支上该文件的内容。

7、Git 中的搜索

用一个简单的命令你就能在 Git 中像专业人士一样搜索了。更有甚者,尽管你不确定你的修改在哪次提交或者哪个分支上,你依然能搜索。

$ git rev-list --all | xargs git grep -F ‘’

例如,假设你想在你的仓库中搜索字符串 “font-size: 52 px;“ :

$ git rev-list –all | xargs git grep -F ‘font-size: 52 px;’F3022…9e12:HtmlTemplate/style.css: font-size: 52 px;E9211…8244:RR.Web/Content/style/style.css: font-size: 52 px;

试试这些小技巧

我希望这些小技巧对你是有用的,或者增加你的生产力或者节省你的大量时间。

你也有一些喜欢的 Git 技巧吗?在评论区分享吧。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Git
    Git
    +关注

    关注

    0

    文章

    207

    浏览量

    17053

原文标题:7 个改变我生活的 Git 小技巧

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32H7 的 3 ADC 时钟同步方法

    1. 引言STM32H7 系列中使用多个 ADC 时,存在 ADC 时钟不同步的风险,这可能导致一 ADC模块干扰其他 ADC 模块的转换过程。当 ADC1 和 ADC2 以双模(dual
    发表于 04-15 16:16 0次下载

    LAT1602_STM32H7 的 3 ADC 时钟同步方法

    STM32H7 系列中使用多个 ADC 时,存在 ADC 时钟不同步的风险,这可能导致一 ADC模块干扰其他 ADC 模块的转换过程。当 ADC1 和 ADC2 以双模(dual mode)工作
    发表于 03-11 10:51 0次下载

    嵌入式开发绕不开的版本管理工具——git

    Git是一开源的分布式版本控制系统,由Linux之父Linus Torvalds于2005年用C语言开发,主要是为了帮助管理Linux内核开发而创建的一开放源码的版本控制软件。Git
    的头像 发表于 01-30 16:47 1477次阅读

    驱动650V CoolGaN™ GIT G5用于电机控制应用:IFX SOI EiceDRIVER™驱动器的探索

    驱动650V CoolGaN™ GIT G5用于电机控制应用:IFX SOI EiceDRIVER™驱动器的探索 在电机控制应用领域,如何高效、安全地驱动功率开关器件是工程师们关注的重点。今天,我们
    的头像 发表于 12-18 11:50 781次阅读

    7章 变量进阶与点阵LED(7.3 7.4)

    习LED点阵就要轻松得多了。一数码管是8LED组成,同理,一8*8的点阵就是由64LED小灯组成。图7-1就是一
    的头像 发表于 12-11 14:56 1149次阅读
    第<b class='flag-5'>7</b>章 变量进阶与点阵LED(7.3 7.4)

    stm32h743_lwip网口使用netutils的tftp文件传输功能时,就报以下错误,为什么?

    :git111rtt_ysh7_controllerrt-threadcomponentsnetsal_socketincludedfs_netsys_select/sys/select.h:14:0, from d
    发表于 09-15 08:16

    2000KVA充电桩变压器用于多少充电桩?6还是7好?

    还是7台的充电桩呢? 作为充电桩配套变压器厂家,中盟电气通过以下的内容为您呈现充电桩变压器解决方案与建议。 部分箱式变压器厂家信誓旦旦的表示:“安装7台没问题!320kW的桩哪会时刻满功率?”若按此配置,7台桩总功率需求达224
    的头像 发表于 08-08 09:53 2745次阅读

    【Banana Pi BPI-RV2开发板试用体验】SDK部署

    本文介绍一下SF21H8898 SDK的部署,并编译出一能在设备上运行的基础版本的固件。 SF21H8898的SDK 可以从bpi的git上面拉取,地址为 https://github.com
    发表于 07-31 23:32

    Texas Instruments LP5867 7x6 LED矩阵驱动器数据手册

    Texas Instruments LP5867 7x6 LED是一款高性能LED矩阵驱动器。该器件集成了6具有N (N = 7) 开关MOSFET的恒流阱,用于支持N × 6
    的头像 发表于 07-25 11:55 996次阅读
    Texas Instruments LP5867 <b class='flag-5'>7</b>x6 LED矩阵驱动器数据手册

    【VisionFive 2单板计算机试用体验】1. 环境搭建与代码整编

    抓取。 1.1 下载docker及镜像 docker pull ubuntu:20.04 cmd窗口执行命令抓取ubuntu镜像。 抓取好后在docker界面看到images栏新增了一ubuntu
    发表于 07-08 23:07

    Git vs Perforce P4:版本控制系统选型指南(附适用场景、团队类型)

    Git适合小团队灵活开发,而Perforce P4更擅长管理大型项目与二进制资产。但你真的了解它们各自最适合的使用场景吗?或许不是“非此即彼”,而是“如何共存”,推荐一读!
    的头像 发表于 06-19 17:04 1595次阅读
    <b class='flag-5'>Git</b> vs Perforce P4:版本控制系统选型指南(附适用场景、团队类型)

    瑞虎7 PLUS和瑞虎7高能版换新上市

    近日,瑞虎7系列迎来双车焕新——瑞虎7 PLUS&瑞虎7 高能版新版型在知名歌手林依轮直播间上市。以“全球销冠,价值标杆”之姿,定义A级SUV价值新标杆!瑞虎7 高能版新版型限时红包价
    的头像 发表于 06-18 16:13 950次阅读

    主流版本控制工具Git vs Perforce P4:架构模式、性能、大文件管理及分支管理对比详解

    Git vs Perforce P4,如何选型?架构模式、性能、大文件管理、分支策略四大维度对比,帮你全面了解两者的核心差异,选择更合适你团队需求的版本控制系统。
    的头像 发表于 06-13 14:52 958次阅读
    主流版本控制工具<b class='flag-5'>Git</b> vs Perforce P4:架构模式、性能、大文件管理及分支管理对比详解

    TPS7H4104-SEP 耐辐射、3V 至 7V 输入、每通道 3A 四通道同步降压转换器数据手册

    TPS7H4104 和 TPS7H4102 分别为 7V、每通道 3A、多通道、峰值电流模式、同步降压转换器,针对区域敏感型空间环境应用进行了优化。该器件包含四 (TPS
    的头像 发表于 05-28 10:45 845次阅读
    TPS<b class='flag-5'>7</b>H4104-SEP 耐辐射、3V 至 <b class='flag-5'>7</b>V 输入、每通道 3A 四通道同步降压转换器数据手册

    RK3568驱动指南|驱动基础进阶篇-进阶7 向系统中添加一系统调用

    RK3568驱动指南|驱动基础进阶篇-进阶7 向系统中添加一系统调用
    的头像 发表于 05-21 14:15 835次阅读
    RK3568驱动指南|驱动基础进阶篇-进阶<b class='flag-5'>7</b> 向系统中添加一<b class='flag-5'>个</b>系统调用