本篇博客会持续更新Git的一些小技巧,帮助你提升工作效率。
Git命令别名
linux系统有上个千命令,但常用的命令也就几十个,除非你是运维工程师,不然掌握那些常用命令,就足够应付工作了,其他的可以查阅文档。
Git的命令也同样多如牛毛,但常用的却不多。
我们知道,linux系统可以通过alias给命令别名,比如把ls -l别名成ll,把tail -f别名成tailf。好处是可以简化输入,提升效率,同时也可以避免输错,尤其是对于不容易记忆的命令。
Git也沿袭了linux别名习惯(毕竟都是linux老大哥开发的),可以对Git命令进行别名。
配置命令:
使用git config [--global] alias.别名 Git命令
举例:
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.mg merge
也可以给带参数的Git命令别名
举例:
把git log --oneline 别名成ll
git config --global alias.ll 'log --oneline'
显示最后最后一次提交
git config --global alias.last 'log -1'
撤销暂存区的修改
git config --global alias.unstage 'reset HEAD'
更有甚者,我们可以把git log配置成超好用的别名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
使用--global参数,代表配置的是全局范围的,也就是说对所有的分支都生效,不使用只对当前仓库有效。
那如何删除掉这些别名呢?这些配置命令都保存在Git的配置文件中,全局的配置文件路径在当前用户的根目录下,有个叫.gitconfig的隐藏文件。每个仓库的配置文件在隐藏目录.git下,有个叫config的文件。配置文件中的[alias]后面,就是别名的配置,想要删除别名,删除对应行即可。
例如全局配置文件中是这样的
$ cd ~
$ cat -n .gitconfig
会打印如下信息:
1 [user]
2 name = 你的账号名称
3 email = 你的邮箱
4 [alias]
5 st = status
6 co = checkout
7 ci = commit
8 br = branch
9 mg = merge
删掉对应的行即可
忽略特殊文件
前面文章有提到不小心把本地配置文件提交到版本库,导致需要做代码回滚的场景,那么如何避免这个问题呢?
我们可以通过添加.gitignore文件,来忽略一些我们不希望的文件。
方法是在Git工作区目录下,也就是跟.git同级的目录,添加.gitignore文件,把要忽略的文件填进去。
比如要忽略mysql.conf这个文件,就把mysql.conf这个文件填进去。它还支持通配符,比如要忽略隐藏文件,可以添加.*,就会忽略掉所有以.开头的文件。
以上面例子,我们可以得到一个如下的.gitignore文件:
.*
mysql.conf
最后需要把.gitignore文件提交到版本库,才能生效。
我们可能会碰到某个文件一直无法add的情况,原因是它被.gitignore文件忽略掉了,这个时候,需要使用git add的-f参数进行强制提交。
或者碰到添加到.gitignore文件后,没有生效,可能是匹配规则写错了。我们可以使用git check-ignore -v 文件名来检查规则是否写错。