改变我使用 Git 工作方式的七个技巧
创始人
2024-03-02 06:10:14
0

这些有用的技巧将改变你使用这个流行的版本控制系统的工作方式。

Git 是目前最常见的版本控制系统之一,无论是私有系统还是公开托管的网站,都在使用它进行各种开发工作。但无论我对 Git 的使用有多熟练,似乎总有一些功能还没有被发现,下面是改变我使用 Git 工作方式的七个技巧。

1、Git 中的自动更正

我们有时都会打错字,但如果启用了 Git 的自动更正功能,就可以让 Git 自动修正打错的子命令。

假设你想用 git status 检查状态,却不小心输入了 git stats。正常情况下,Git 会告诉你 stats 不是一条有效的命令:

$ git stats
git: ‘stats’ is not a git command. See ‘git --help’.

The most similar command is
status

为了避免类似的情况发生,请在 Git 配置中启用 Git 自动更正功能:

$ git config --global help.autocorrect 1

如果你希望这个命令只适用于你当前的版本库,请省略 --global 选项。

这条命令启用了自动更正功能。更深入的教程可以在 Git Docs 中找到,但尝试一下和上面一样的错误命令,就能很好地了解这个配置的作用:

$ git stats
git: ‘stats’ is not a git command. See ‘git --help’.
On branch master
Your 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 master
32
$ git rev-list –count dev
34

3、优化你的仓库

你的代码仓库不仅对你有价值,对你的组织也有价值。你可以通过一些简单的做法来保持你的版本库的清洁和更新。其中一个最好的做法是 使用 .gitignore 文件。使用这个文件,就是告诉 Git 不要存储许多不需要的文件,比如二进制文件、临时文件等等。

为了进一步优化你的版本库,你可以使用 Git 的垃圾收集功能:

$ git gc --prune=now --aggressive

当你或你的团队大量使用 pullpush 命令时,这条命令就会起到帮助作用。

这个命令是一个内部工具,可以清理仓库中无法访问或 “孤儿” Git 对象。

4、备份未被跟踪的文件

大多数时候,删除所有未被跟踪的文件是安全的。不过很多时候,你不仅要删除,还要为你的未跟踪文件创建一个备份,以备以后需要。

通过 Git 和一些 Bash 命令管道,可以很容易地为你的未被跟踪的文件创建一个压缩包:

$ 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 的工作主要依赖于两个部分:

  1. 工作树(你当前签出的文件状态)。
  2. 你的 Git 仓库的路径(即你的 .git 文件夹的位置,其中包含版本信息)。

这个文件夹存储了所有的引用和其他重要的细节,比如配置、仓库数据、HEAD 状态、日志等等。

如果你删除这个文件夹,你的源代码的当前状态不会被删除,但你的远程信息,如你的项目历史记录,会被删除。删除这个文件夹意味着你的项目(至少是本地副本)不再处于版本控制之下。这意味着你不能跟踪你的变化;你不能从远程拉取或推送。

一般来说,不需要在 .git 文件夹里做什么,也没有什么应该做的。它是由 Git 管理的,基本上被认为是个禁区。然而,这个目录里有一些有趣的工件,包括 HEAD 的当前状态。

$ cat .git/HEAD
ref: refs/heads/master

它还可能包含对你的存储库的描述:

$ cat .git/description

这是一个未命名的仓库,编辑这个 description 文件可以命名这个仓库。

Git 钩子文件夹(hooks)也在这里,里面有一些钩子示例文件。你可以阅读这些示例来了解通过 Git 钩子可以实现什么,你也可以 阅读 Seth Kenlon 的 Git 钩子介绍

6、查看另一个分支的文件

有时你想查看另一个分支的文件的内容。用一个简单的 Git 命令就可以实现,而且不需要切换分支。

假设你有一个名为 README.md 的文件,它在 main 分支中,而你正在 dev 分支上工作。

使用下面的 Git 命令,你可以在终端上完成:

$ git show main:README.md

一旦你执行了这个命令,你就可以在你的终端上查看文件的内容。

7、在 Git 中搜索

只需一个简单的命令,你就可以像专业人士一样在 Git 中搜索。更棒的是,即使你不确定是在哪个提交或分支上做的修改,也可以在 Git 中搜索。

$ git rev-list --all | xargs git grep -F 'string'

例如,假设你想在你的版本库中搜索 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 小技巧 吗?在评论中分享吧。


via: https://opensource.com/article/20/10/advanced-git-tips

作者:Rajeev Bera 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Git

相关内容

音画同步,AI视频也能有完...
机器之心报道 编辑:泽南 AI 生成的「最后一道关卡」已经突破...
2025-06-27 22:12:41
银河通用X清华大学发布首款...
该论文由清华大学与北京银河通用机器人有限公司合作完成。论文的共同第...
2025-06-12 17:11:39
【Git】pull 分支报...
报错消息 示例图: 示例代码: ➜ ...
2025-06-01 18:31:43
使用IDEA把项目上传到g...
使用IDEA把项目上传到gitee仓库在gitee上建立一个仓库第...
2025-06-01 17:15:00
本地新建项目如何推送到远程...
我本地新建了一个vue项目,想推送到远程的gitla...
2025-05-31 23:03:33
Windows环境安装及配...
欢迎关注博主 Mindtechnist 或加入【Linux C/C...
2025-05-31 21:41:26

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...