先用git clone http通道下来
git remote -v
查看中央版本库地址
git remote rm origin
git remote -v
git remote add origin git通道地址
秘钥(公钥)生成
ssh-keygen(以oschina为例,该秘钥要服务器和oschina公用!!)
找到生成的秘钥 方法项目管理 秘钥管理中 即可以后都不用打密码l !!!!!!
ssh-keygen -t rsa -C "xxxxx@xxxxx.com" 邮箱就是自己oschian的邮箱
生成和oschina连接的秘钥
cat ~/.ssh/id_rsa.pub
cat会出现ssh rsa开头的信息 将全部复制下 (oschina上将最后面的邮箱去掉)
邮箱去掉后就是你的oschina public key
http://git.oschina.net/keys 加上你的oschina key 你push就不需要打密码
将你的秘钥加到oschina上
然后终端输入
ssh -T git@git.oschina.net
Welcome to Git@OSC, yourname!
就OK了
接下来是将此秘钥增加到你的服务器上!
vim ~/.ssh/au+tab键(补全)
vim ~/.ssh/authorized_keys
如果没有这个文件
就 mkdir ~/.ssh
vim ~/.ssh/authorized_keys
然后 cat ~/.ssh/id_rsa.pub(在本机执行)
此时将邮箱加上写入这个文件就可以免密码登陆
加上去就和服务器SSh秘钥登录!!
自动化部署!!
#!/usr/bin/env bash
echo 'commit messagr:'
read msg
git pull
git add .
git commit -a -m '$msg'
git push origin master
ssh root@120.76.125.13 "cd /root/data_analysice/crawler && git pull"
以上自动化部署脚本还存在的一定的问题,就是有时框架会产生Runtime目录,这时会导致服务器和本地Runtime不一致,这时要将Runtime目录移除版本库控制
```
Git rm -r -n --cached */Runtime/\*
git rm -r --cached */Runtime/\* `
git commit -m"移除Runtime目录下所有文件的版本控制"
git push origin master //提交到远程服务器`
touch .gitignore
然后建立一个.gitignore文件
Runtime/ 表示不跟踪Runtime目录 ,将此文件 commit 并 push
之后 git status 就可以看到不再提示你add Runtime目录了
最后再讲一下自动化的原理实现
1:git分两种公钥,一种是项目公钥,持有该公钥只能clone和pull项目,该公钥成为项目公钥(一般用于服务器),可以在项目管理中为服务器添加项目公钥。
2:二是用户公钥,该公钥拥有push权限,一般用于用户,该公钥配置是在git平台中配置 以oschaina为例,
http://git.oschina.net/keys
去这里部署的公钥拥有push权限
git切换远程分支
1:如果本地有远程分支的情况下:
git branch 分支名字
2:如果本地没有远程分支的情况下:
//查看所有分支
git branch -va
git fetch origin
//切换分支
git check 远程分支名 (origin/dev)