一、使用Git别名
使用Git别名可以帮助你节省时间和击键,可以让常用的Git命令瞬间变得更简洁。例如,将“git status”命令替换为“git s”命令。
git config --global alias.s status
那么之后,你就可以使用“git s”取代“git status”了。
除了“git s”,还有很多别名可以使用,例如:
git config --global alias.a add
git config --global alias.b branch
git config --global alias.c commit
git config --global alias.co checkout
git config --global alias.d diff
git config --global alias.l log
git config --global alias.p push
git config --global alias.price '!git remote update -p; git status -uno'
通过使用别名,你可以使用更短的命令行来执行相同的Git操作。
二、使用Git配置文件
为了让你的Git工作流更加高效,你可以创建一个Git配置文件,它可以包含你的别名、设置等信息,从而避免在每次执行Git命令时都需要手动输入这些设置。
在Linux、macOS和Unix中,你可以创建一个名为“~/.gitconfig”的文件,并将以下内容添加到文件中:
[alias]
s = status
a = add
b = branch
c = commit
co = checkout
d = diff
l = log
p = push
price = !git remote update -p; git status -uno
[core]
editor = nano
[user]
name = Your Name
email = youremail@example.com
[diff]
tool = meld
如果你使用Windows,你可以在Git Bash中执行以下命令来创建一个名为“gitconfig”的文件并添加相同的内容。
echo "
[alias]
s = status
a = add
b = branch
c = commit
co = checkout
d = diff
l = log
p = push
price = !git remote update -p; git status -uno
[core]
editor = nano
[user]
name = Your Name
email = youremail@example.com
[diff]
tool = meld
" > ~/.gitconfig
这里的“core.editor”设置了你的默认Git编辑器,这里将其设置为了“nano”。另外,“user.name”和“user.email”是在Git中显示你的用户名和电子邮件地址,它们默认显示为你安装Git时所提供的信息。最后,“diff.tool”指定了Git默认使用的比较工具是meld。你可以根据自己的喜好调整这些设置。
三、使用Git Hooks
Git钩子(Git Hooks)是一些脚本,它们在Git操作的不同阶段自动执行。例如,在提交代码时,可以使用Git pre-commit钩子验证代码是否符合要求。在这个阶段,程序员可以通过编写钩子来自动检查代码质量,或者在代码提交前格式化代码。
Git Hook有两种类型:客户端钩子(Client-Side Hooks)和服务器端钩子(Server-Side Hooks)。客户端钩子针对本地存储库,服务器端钩子针对远程存储库。
这里介绍一些常用的Git Hooks:
1. Git pre-commit钩子
在提交前运行的Hook,用于确保即将提交的代码符合要求。
#!/bin/sh
# pre-commit hook
# Runs test suite and checks coding standards before allowing a commit to go through.
exec << /dev/null
case $(git diff --cached --name-only --diff-filter=ACM) in
*.php)
# run PHP syntax check
docker run --rm --interactive --tty --volume "$(pwd)":/app php:7.4-cli php -l {} \; || exit 1
# run PHP Code sniffer
docker run --rm --interactive --tty --volume "$(pwd)":/app phpqa/php-cs-fixer fix --rules=@Symfony --show-progress=estimating --verbose --ansi {} \; || exit 1
;;
*.css)
# run CSS LINT
docker run --rm --interactive --tty --volume "$(pwd)":/app node:10.23-alpine yarn --silent stylelint {}
;;
*)
;;
esac
exit 0
2. Git pre-push钩子
在push代码前运行的Hook,用于确保即将推送的代码符合要求。
#!/bin/sh
# pre-push hook
# Runs test suite and checks coding standards before allowing a push to go through.
exec << /dev/null
# Run PHP Unit
docker run --rm --interactive --tty --volume "$(pwd)":/app php:7.4-cli vendor/bin/phpunit \; || exit 1
# run Behat test suite
docker-compose -f docker-compose.service.yml -f docker-compose.override.yml run --rm php ./vendor/bin/behat --no-interaction || exit 1
exit 0
四、其他Git技巧
1. 使用Git Autocomplete
Git命令补全可以帮助你更快地输入命令并避免拼写错误。在Linux或Unix中,可以使用以下命令启用命令补全功能:
source /usr/share/bash-completion/completions/git
对于macOS用户,可以在.bash_profile文件中添加以下行:
if [ -f /usr/local/etc/bash_completion.d/git-completion.bash ]; then
. /usr/local/etc/bash_completion.d/git-completion.bash
fi
2. Git Log中的--pretty选项
使用--pretty选项可以更好地显示提交日志,使其更易于阅读。在Git中有几种内置的日志格式可供选择,例如,要使用Git默认的日志格式:
git log --pretty=oneline
你可以根据自己的需求使用其他的日志格式,例如:
git log --pretty=format:'%h - %s (%cr) [%an]'
这将以短哈希值、提交信息、相对时间和作者的名称的格式进行显示。
3. Git Alias和外部命令的结合使用
除了使用别名外,你还可以将Git命令结合外部命令来使用。例如,你可以使用Git Alias将“git loc”定义为“git log --pretty=format:"%C(auto)%h%d %s %Cgreen(%an, %ar)%Creset"”,然后将这个命令与grep一起使用,来筛选某个关键词。
git loc | grep "keyword"
4. 使用Git Stash
当你需要切换分支或者合并代码时,Git Stash可以帮助你暂存目前工作区中的更改。使用Git Stash命令,可以将当前所有未提交的更改保存到一个临时的隐藏存储区中。
要将更改存储到Git Stash中,请执行以下命令:
git stash
然后你可以自由的修改,切换分支和进行其他操作。在需要恢复之前的变更时可以使用以下命令:
git stash apply
至此你的更改即重新被引用到当前分支。
5. 使用Git Reflog
当你想撤销某个Git命令时,如果在命令时后没有指定分支标签等信息,那么很有可能会丢失之前的更改。 Git Reflog可以记录每一个操作Git的步骤,包括将游标移动到哪里、合并的提交ID、拉命令、合并命令以及重置等操作。
如果你想查看你历史的Git操作,在Git中使用Git Reflog命令:
git reflog
总结
作为一个软件开发者,熟练掌握Git是非常重要的。通过使用Git的别名、配置文件、Hooks和其他有用的技巧,你可以让自己的Git工作流更加高效和流畅。在这篇文章中,我们分享了Git一些实用的技巧,对于经常使用Git的新手和有经验的开发者都非常有用。通过掌握这些技巧,您可以使Git管理更加流畅,并使开发工作更加高效。