使用 git 的一些小技巧

发布于 2023-03-01 21:01:00 字数 2979 浏览 110 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

温柔戏命师

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文