好久没在家写代码了,要把准备做的几个在线工具的代码都用git管理,并放在服务器上面。几个月不折腾,突然发现很多命令和配置都忘记了。在这里记一下,方便以后再查。

1. 库初始化,在将要定义成为git库的目录下执行:

git init
git add .
git commit

建立之后的库默认只能本地使用,想让它能接受远程的push,必须有个金手指文件:

cd .git
touch git-daemon-export-ok

2. 用ssh协议克隆一个库的远程url:

ssh://user@server:[port]/absolute/path/to/repository

因为ssh协议的端口是固定的,所以可以省略。比如我的tools库:

git clone ssh://mrdaydreamer@newyork:/home/dev/tools/.git

3. 默认情况下远程被checkout的分支仍然不能接受push,错误信息很清楚:

remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.

很显然,要么在远程checkout一个不用的分支,要么把这个变量设置成ignore。显然后者看着比较舒服:

git config receive.denyCurrentBranch ignore

4. 生成ssh公共密钥

以前在家git一直用命令行,前不久才知道有个图形化工具很不错,叫git extensions,所以回家试了一下。都挺好用,就是ssh协议每次都要弹窗输密码很烦。其实可以给git生成全局密钥,再把公钥扔到服务器上,就不用输密码了。随便打开一个git console,并执行:

ssh-keygen.exe

此命令会在%HOME%/.ssh/下生成两个密钥文件,其中扩展名为.pub的文件即为公钥,复制其内容到服务器上,添加到~/.ssh/authorized_keys文件的末尾,以后就不用再输ssh密码了。