分类目录归档:电脑网络

Git checkout 指定分支

直接 clone 时就 clone 指定分支而不是默认的 master

git clone -b branch_name repo

先 clone 下来,再 checkout 到指定分支

git co -b branch_name origin/branch_name

PHP 静态服务器

一直用 python 的 python -m SimpleHTTPServer 8080 的形式来做简单的静态服务器。

原来 PHP 也有类似的工具,如 php -S localhost:8080,支持 PHP 文件和 POST 哦。

Mac ssh key

Mac 下创建了 ssh 密钥,但可能会发现不生效,原因是没有添加到列表中,可以用 ssh-add the_private_key_path 来添加,然后用 ssh-add -l 来列出列表确认已经添加。

但是可能会发现 mac 下重启后丢失所有 key, 需要重新用 ssh-add 添加,可以把密钥添加仅 keyChain 中来保存。

$ ssh-add -K the_private_key_path

Mac 自带 VNC 客户端

Mac 自带了 VNC 客户端,只是路径有点深,其路径为 /System/Library/CoreServices/Applications/Screen Sharing.app

使用 spotlight 或 alfred 的搜索 Screen Sharing 即可。

Git 文件名大小写问题

由于 Mac 下文件名大小写不敏感,造成 git 下如果改了名字,譬如小写改大些,推送到 linux 服务器的时候会没有效果,Github 上的也是小写。
所以,如果在 Mac 上改文件名,需要用下面的命令

$ git mv --force myfile MyFile

ZSH历史命令自动补全

oh-my-zsh 的默认配置在碰到历史命令替换时需要先替换出来确认一遍才会执行,不会默认执行。

如原本下面的命令会直接进入新建的目录

$ mkdir dir
$ cd !$
$

但在 zsh(oh-my-zsh 默认配置) 中,会变成

$ mkdir dir
$ cd !$
$ cd dir

移除这个的默认配置,只需在配置文件终稿添加 unsetopt hist_verify 即可。

终端进入目录自动运行 shell 脚本

利用 prompt 钩子,可以在终端进入目录时执行特定的 shell 代码。如:

Call function 'foo'
PROMPT_COMMAND=foo

# The function
foo() {
    pwd
}

对于使用 oh-my-zsh 的情况,可以直接做成插件形式,如:

# ~/.oh-my-zsh/plugins/puglin-xx

setopt PROMPT_SUBST

typeset -ga chpwd_functions

chpwd_functions+='foo'

function foo() {
    # whatever code
    pwd
}

利用这个特性可以做一些特殊的需求,比如检测 git 仓库的用户名是否是合适的(使用多家 git 托管服务且用户名不一致的情况下有用),分支是否 ok 等。

Update@2019-01-29

如果是不同 git 使用不同配置的情况(如区分个人和工作配置),可以使用 git include 配置 来解决,如:

~/.gitconfig

[user]
    name = personal_name
    email = xxx@personal.com
[includeIf "gitdir/i:~/work/"]
    path = ~/.gitconfig_work

~/.gitconfig_work

[user]
    name = work_name
    email = xxx@work.com

这样,一旦项目位于 ~/work/ 下,那么就是使用 ~/.gitconfig_work 的配置来覆盖通用的。

需要注意,如果目录是做来软链的,那么软链后的路径以及软链前的路径都需要配置才能不管是用软链还是使用真实路径访问 git 项目才会使用覆盖后的配置。