五个你需要知道的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 来查找问题,效果如下:

相关推荐
DWei_GaGa1 小时前
Git:查看分支、创建分支、合并分支
git
涵信3 小时前
Windows11 安装 Ubuntu-20.04,同时安装配置 zsh shell,配置 git 别名(alias),大大提高开发效率
linux·git·ubuntu·bash
m0_548514773 小时前
2024.12.10——攻防世界Web_php_include
android·前端·php
凤邪摩羯4 小时前
Android-性能优化-03-启动优化-启动耗时
android
凤邪摩羯4 小时前
Android-性能优化-02-内存优化-LeakCanary原理解析
android
喀什酱豆腐4 小时前
Handle
android
喝鸡汤5 小时前
一起学Git【第五节:git版本回退】
git
m0_748232926 小时前
Android Https和WebView
android·网络协议·https
m0_748251726 小时前
Android webview 打开本地H5项目(Cocos游戏以及Unity游戏)
android·游戏·unity
web Rookie7 小时前
Git的简介
git