7

使用git的一些小技巧

 3 years ago
source link: https://www.lujun9972.win/blog/2018/07/04/%E4%BD%BF%E7%94%A8git%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B0%8F%E6%8A%80%E5%B7%A7/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

使用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\033[32m
表示后面的内容以绿色前景色显示 \W当前目录的名称
\033[33m\033[33m
表示后面的内容以棕色前景色显示 \$(git branch 2> dev/null | sed -e '/^[^*]/d' -e 's/* .∗.∗ (\1)/')显示当前仓库branch
\033[00m\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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK