- 作者:老汪软件技巧
- 发表时间:2024-09-24 11:03
- 浏览量:
在开发中,熟练使用 Git 是非常重要的,这里有五个小技巧,可以帮助你更好地使用 Git。
配置别名
在 Git 中可以通过配置别名来简化常用的 Git 命令,提高工作效率。配置 Git 命令别名的方法有两种,一种是使用 git config 命令;一种是修改 .gitconfig 或者 .git/config文件。
git config命令
我们可以直接在命令行中使用git config命令来设置别名。示例如下,我们把 git status 命令设置别名为 st,可以执行以下命令:
git config --global alias.st status
这样我们就可以通过 git st 来代替输入 git status 命令了。效果如下图所示:
注意这里的--global参数表示全局配置,这个别名将在你的所有 Git 仓库中都可用。如果你只想在当前仓库中设置别名,可以省略--global参数,使用git config alias.st status。
修改配置文件
除了在命令行配置外,我们还可以直接修改配置文件。如果想要全局配置,需要修改 .gitconfig 文件;如果只是应用于当前仓库,则只需修改 .git/config 文件。例如,在文件中添加以下内容:
[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 文件)。示例如下:
*.jpg binary
*.png binary
*.pdf binary
*.zip binary
这会告诉 Git,所有扩展名为 .jpg、.png、.pdf 和 .zip 的文件都是二进制文件。除此之外,你还可以指定特定文件的处理方式,比如说你想比较图片和pdf文件的区别,可以使用 exiftool 和 pdfmeta 来比较不同。配置示例如下:
*.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 来查找问题,效果如下: