五个你需要知道的Git的使用技巧

在开发中,熟练使用 Git 是非常重要的,这里有五个小技巧,可以帮助你更好地使用 Git

配置别名

在 Git 中可以通过配置别名来简化常用的 Git 命令,提高工作效率。配置 Git 命令别名的方法有两种,一种是使用 git config 命令;一种是修改 .gitconfig 或者 .git/config文件。

git config命令

我们可以直接在命令行中使用git config命令来设置别名。示例如下,我们把 git status 命令设置别名为 st,可以执行以下命令:

git 复制代码
git config --global alias.st status

这样我们就可以通过 git st 来代替输入 git status 命令了。效果如下图所示:

注意这里的--global参数表示全局配置,这个别名将在你的所有 Git 仓库中都可用。如果你只想在当前仓库中设置别名,可以省略--global参数,使用git config alias.st status

修改配置文件

除了在命令行配置外,我们还可以直接修改配置文件。如果想要全局配置,需要修改 .gitconfig 文件;如果只是应用于当前仓库,则只需修改 .git/config 文件。例如,在文件中添加以下内容:

git 复制代码
[alias]
    st = status
    cm = commit
    cma = "commit --amend"

内容搜索

git 除了对代码分支管理外,还可以使用 git grep 对内容进行搜索。如下图所示,使用 git grep -i -n "onCreate" 来搜索 onCreate 方法的代码位置。其中-i 表示忽略大小写,-n 表示显示代码行数,双引号内是搜索的内容,内容可以是正则表达式。

除了常规的搜索能力外,git grep 的功能都是与 git 相关联。比如说,我们可以使用 git grep 来直接搜索指定分支的内容。如下图所示,当我们在当前分支搜索 methodInTestGitBranch 方法时,没有结果。当指定 搜索范围为 test_git 分支时就可以找到我们想要的结果了。

更多关于 git grep 的命令,可以看官方文档 Git - git-grep Documentation

比较分支和提交

一般情况下,我们会使用 git diff 来比较文件在暂存区和工作区的差异。但是 git diff 的本事不止如此,它还可以比较不同分支或者不同提交(commit)的区别。

使用 git diff master test_git 命令就可以比较 master 分支 和 test_git 分支区别。 如果你只想比较指定文件的区别,可以添加 -- path 来限制。效果如下图所示:

如果需要比较提交的区别,命令也是一样的,效果如下图:

二进制文件处理

在 Git 中,可以使用 .gitattributes 文件来指定如何识别二进制文件(如果文件不存在的话创建一个 .gitattributes 文件)。示例如下:

git 复制代码
*.jpg binary
*.png binary
*.pdf binary
*.zip binary

这会告诉 Git,所有扩展名为 .jpg.png.pdf.zip 的文件都是二进制文件。除此之外,你还可以指定特定文件的处理方式,比如说你想比较图片和pdf文件的区别,可以使用 exiftoolpdfmeta 来比较不同。配置示例如下:

git 复制代码
*.png diff=exiftool
*.pdf diff=pdfmeta

问题提交定位

当不知道什么地方出现问题时,可以使用 git 自带的二分法命令 git bisect 查找出错的提交。使用方法很简单,最开始你输入 git bisect start,在输入 git bisect bad 告诉当前commit 是错误的,然后在输入 git bisect good commit 告诉 git 哪个 commit 是正常的。

接下来 git 就会根据你的输入情况,使用二分法来查找可能造成问题的提交。当找到问题提交后,需要使用 git bisect reset 命令来恢复初始状态。示例如下图所示,其中 add error 是一个错误的提交

使用 git bisect 来查找问题,效果如下:

相关推荐
曙曙学编程6 分钟前
初级数据结构——树
android·java·数据结构
闲暇部落2 小时前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
诸神黄昏EX4 小时前
Android 分区相关介绍
android
大白要努力!5 小时前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
Estar.Lee5 小时前
时间操作[取当前北京时间]免费API接口教程
android·网络·后端·网络协议·tcp/ip
Winston Wood6 小时前
Perfetto学习大全
android·性能优化·perfetto
和你一起去月球7 小时前
TypeScript - 函数(下)
javascript·git·typescript
我不是程序猿儿8 小时前
【GIT】TortoiseGit的变基(Rebase)操作
git
Dnelic-8 小时前
【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录
android·junit·单元测试·android studio·自学笔记
Eastsea.Chen11 小时前
MTK Android12 user版本MtkLogger
android·framework