使用 git 的一些小技巧
bash prompt 中显示仓库 branch 的名字
在 bash prompt 中显示仓库 branch,可以防止你在错误的 branch 下修改了代码。
环境变量 PS1 定义了 bash prompt 的格式,其中可以使用 \\((command)
,来将 =command=
的执行结果显示在 bash prompt 中。 因此,我们只需要在 PS1 合适的地方嵌入 =\\)(parse_git_branch)=
就能在 bash prompt 中显示仓库 branch 名了。
比如我的 PS1 定义为:
export PS1="\u@\h \[\033[32m\]\W\[\033[33m\]\$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/')\[\033[00m\] $ "
其中:
- \u
- 替换成用户名
- \h
- 替换成主机名
- \[\033[32m\]
- 表示后面的内容以绿色前景色显示
- \W
- 当前目录的名称
- \[\033[33m\]
- 表示后面的内容以棕色前景色显示
- \$(git branch 2> dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\) (\1)/')
- 显示当前仓库 branch
- \[\033[00m\]
- 回复正常的前景色
git git
有没有遇到过头脑花昏,输入 git 命令时重复输入 git
的情况?比如这样
lujun9972@T520 lctt-scripts (master) $ git git status git:'git' 不是一个 git 命令。参见 'git --help'。 最相似的命令是 init
不过,当执行 git command
时,实际上执行的是 git-command
这个命令,所以我们可以通过手工创建一个 git-git
命令来解决这一问题
echo 'git $@' > /usr/local/bin/git-git chmod +x /usr/local/bin/git-git
lujun9972@T520 lctt-scripts (master) $ git git git git status 位于分支 master 您的分支与上游分支 'origin/master' 一致。 未跟踪的文件: (使用 "git add <文件>..." 以包含要提交的内容) env/ 提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
自动修正输入错误的 git command
有的时候可能会出现输入错误的 git command 的情况
lujun9972@T520 lctt-scripts (master) $ git sttu git:'sttu' 不是一个 git 命令。参见 'git --help'。 最相似的命令是 status
git 会提示错误并自动推测你想要输入的命令,然后你可以再次输入正确的命令
lujun9972@T520 lctt-scripts (master) $ git status 位于分支 master 您的分支与上游分支 'origin/master' 一致。 未跟踪的文件: (使用 "git add <文件>..." 以包含要提交的内容) env/ 提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
但通过配置 help.autoCorrect
参数,我们可以设置让 git 自动执行修正后的命令。
git config --global help.autoCorrect 10
表示10个 0.1 秒后,git 自动执行修正后的命令。 若不希望 git 自动执行该命令,则需要在这个时间段内按下 Ctrl-c
终止 git 的运行。
lujun9972@T520 lctt-scripts (master) $ git sttu 警告:您运行了一个并不存在的 Git 命令 'sttu'。 假定你想要的是 'status',在 1.0 秒钟后继续。 位于分支 master 您的分支与上游分支 'origin/master' 一致。 未跟踪的文件: (使用 "git add <文件>..." 以包含要提交的内容) env/ 提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
若不希望等待,由 git 直接执行修正后的命令,则需将该时间设置为负值(注意,不是0值)
git config --global help.autoCorrect -1
lujun9972@T520 lctt-scripts (master) $ git stau 警告:您运行了一个并不存在的 Git 命令 'stau'。 假定你想要的是 'status' 并继续。 位于分支 master 您的分支与上游分支 'origin/master' 一致。 未跟踪的文件: (使用 "git add <文件>..." 以包含要提交的内容) env/ 提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
要警用 git 的自动修正功能,则将超时时间设置为 0,这也是初始的默认值
git config --global help.autoCorrect 0
lujun9972@T520 lctt-scripts (master) $ git stau git:'stau' 不是一个 git 命令。参见 'git --help'。 最相似的命令是 status
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论