小技巧

shell通过SSH连接github

这里以Windows上的Git Bash连接github为例, Linux, gitlab等情况相似.

  1. 生成SSH key:

    ssh-keygen -t rsa -C "user@site.com"
    

    一路回车, 会在~/.ssh目录下生成id_rsa和id_rsa.pub两个文件, 即公钥私钥对.

  2. 将公钥添加到github

    依次点击github网页上的settings/SSH and GPG keys/New SSH key, 把id_rsa.pub文件的内容, 添加到key文本区. 可以给这个key取一个名字用于和其他key区分, 如”windows-home”

  3. 测试添加是否正确

    运行 ssh -T git@github.com , 如果出现类似”Hi zzqcn! You’ve successfully authenticated”的字样, 说明SSH key配置成功. 如果出现”Permission denied (publickey)” 等字样, 说明配置失败, 可以运行 ssh -v git@github.com 来查看详细信息.

在命令提示符中显示当前分支

macOS:

  1. 定位脚本git-prompt.sh

    我的在 /Applications/Xcode.app/Contents/Developer/usr/share/git-core/, 另外此目录还有git-completion.bash. git-prompt.sh可用于在命令提示符中显示当前分支, git-completion.bash可用于敲git命令时按tab智能提示和补全.

    我这个应该是Xcode自带的, 如果通过brew安装的, 路径应该不同.

  2. 将脚本拷贝到用户目录(~/)

  3. 修改~/.bash_profile, 比如

    if [ -f ~/.git-completion.bash ]; then
        source ~/.git-completion.bash
    fi
    
    if [ -f ~/.git-prompt.sh ]; then
        source ~/.git-prompt.sh
        export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\] \[\033[01;36m\]\$(__git_ps1 '(%s)')\[\033[00m\]\n$"
    fi
    

    其中PS1可以设置成自己喜欢的样式; 另外要注意修改~/.bashrc无效

  4. source ~/.bash_profile , 使更改生效

Ubuntu:

  1. 定位脚本, 我的在/usr/lib/git-core/git-sh-prompt

  2. 将此脚本拷贝到用户目录, 如~/.git-prompt.sh

  3. 修改~/.bashrc, 加入

    if [ -f ~/.git-prompt.sh ]; then
        source ~/.git-prompt.sh
        export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\] \[\033[01;36m\]\$(__git_ps1 '(%s)')\[\033[00m\]\n$"
    fi
    
  4. source ~/.bashrc , 使更改生效

另外要提醒, 最好在~/.bashrc里把force_color_prompt打开, 不然SecureCRT登录上去命令提示符没有彩色效果:

force_color_prompt=yes

CentOS:

// for CentOS 7.3

  1. 准备脚本:

    cp /usr/share/git-core/contrib/completion/git-prompt.sh ~/.git-prompt.sh
    cp /etc/bash_completion.d/git ~/.git-completion.sh
    

# 修改~/.bashrc:

if [ -f ~/.git-prompt.sh ]; then
    source ~/.git-prompt.sh
    export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\] \[\033[01;36m\]\$(__git_ps1 '(%s)')\[\033[00m\]\n$"
fi

if [ -f ~/.git-completion.sh ]; then
    source ~/.git-completion.sh
fi

force_color_prompt=yes
set autolist=ambiguous
  1. 让修改生效:

    source ~/.bashrc