Git开心在服务器和github
才发现, 某些事情, 我们想的太复杂了.
git效率, 提升效率是一定的.
-
密码要搞定, 不必每次都输入. https和ssh方式都可以.
- 复杂的ssh方式, …… 需要把本地的~/.ssh/id_rsa.pub copy到服务器 ~/.ssh/authorized_keys文件中. 注意, 不是覆盖, 是把本地这一句, 放到服务器里面, 单独占一行.
- 简洁的https方式. 可以一句话搞定. 但是会有很多问题, 不推荐使用, 尤其是在服务器.
#复杂的ssh方式 pbcopy <~/.ssh/id_rsa.pub #ssh方式用这个, 把这个公钥复制到服务器. profile setting->ssh key->add ssh key.#github 可以把这个公钥放到个人profile(个人首页右上角)里面. ssh-copy-id git@server #这个命令就是干活的, 但是, 需要 openssh-client package. cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"' #这句话直接就可以用. #简洁的https方式 git config --global credential.helper cache #linux git config --global credential.helper osxkeychain #mac
-
服务器自动部署.
- 服务器建一个裸体库, 比如mse.git
- 本地添加远程源, 记得要推送本地需要推送的分支上去.
- 服务器设置钩子, 自动更新工作目录
#进入刚刚建立的裸体库mse.git/hooks目录, 然后编辑post-receive cd /data/www/gitm/bareserver/mse.git/hooks cp post-receive.sample post-receive #把sample改为配置. vi post-receive#添加最后一行: GIT_WORK_TREE=/data/www/gitm/workd/ git checkout weixin -f
-
rebase, 分支推主线之前, 先弄这个. 不要在push到服务器之后弄这个.
git rebase master # 把master当做当前分支的基础, 这样master和store就没有分叉的历史了, 看上去也比较清爽, 而且也比较符合实际的业务逻辑. 这样当你推向主线的时候, 主线的管理者不需要merge了. git pull #rebase 之后需要pull. git push #rebase之后, 先pull, 再push. 然后发现整个目录清净了. #注意, push服务器之后, 就不要搞这个了. 这是在push之前做的.
-
合并commit, 本地一堆commit, push之前合并一下.
git add . #反复做这两步操作. git commit --amend -m "no need indepandent" #反复这两步, 提交就都提交到了最后一个版本上面. git rebase -i HEAD~3 #修改最近3次提交, 注意push服务器之前做这个, push之后再做这个, 就不合适了. #也就是说, git status时, 至少ahead 主线一个commit, 才能做这个操作, 否则就引起分支, 合并, 以及重复提交, 真心很烦, 会导致提交时间线比不整理更复杂, 且两次重复的一样的提交, 令人费解.
github的密码自动记录 https方法
-
网上有人说https不能缓存密码, 这个是不对的. mac和linux都支持https缓存密码, 甚至都是相同的工具, 不过是不同的参数而已.
git config --global credential.helper cache #linux git config --global credential.helper osxkeychain #mac
-
参考: https://help.github.com/articles/caching-your-github-password-in-git/
github的密码 ssh方法
github右上角的profile setting->ssh key->add ssh key.
-
本机制造一个key
- 在terminal里面输入: ssh-keygen -t rsa -C “你的邮箱@qq.com”
- 然后一路回车
-
复制公钥可以直接用 pbcopy <~/.ssh/id_rsa.pub (感谢汤大师提供)\
- 笨办法: 在terminal里面输入: cat ~/.ssh/id_rsa.pub
- 配合cat的步骤, 然后copy terminal里面显示的一大段喵星语,类似这个样子:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA你的邮箱@qq.com
- 把公钥粘贴到github, 大功告成.
git用户密码操作中, 需要检查的内容
-
查看ssh的用户名, cat ~/.ssh/id_rsa.pub
-
查看是否cache,
git config -l credential.helper=cache #看看是否有这一行, 有就说明cache了.
-
github https的用户名.
- 还是user.name和user.email.
- 没有是啥情况? 估计是传过ssh的公钥了.
github的组织
- 每次手工添加人很麻烦.
- 可以建个组织, 然后把人都拉进来.
- 组织也是可以改名的. 这个太爽了.
- 具体操作也在个人设置里面.
github双因素认证
- 增加安全性可以双因素.
- 手机安装google anthenticator.
- 然后到个人设置里面, 双因素就好了.
- 两点不爽.
- 支付宝不支持, 真心的, 没有kpi的事, 就是没人做.
- 短信验证, 不支持🇨🇳+86, 不知道为啥?
- 第三点不爽, 导致我关掉了它.
- 关于命令行如何使用, 官方介绍语焉不详, 貌似复杂.
git服务器自动部署
-
服务器建立一个裸体库.
git init --bare mse.git #mse.git是随便起的名字, 你的裸体库的名字, 自己可以随便起名
-
本地添加这个裸体库作为远程源.
git remote add hujingauto root@121.121.121.121:/data/www/gitm/bareserver/mse.git #hujingauto是一个新的远程源. #root是server的用户名, 不该用root. #这个ip是server地址. #后面这一串地址是之前建立git裸体库时, git提示的. git push hujingauto weixin #推送到hujingauto, 用weixin分支到远程的微信分支, 这是分支提交的方法.
-
服务器设置钩子, 自动更新工作目录.
#进入刚刚建立的mse.git/hooks目录, 然后编辑post-receive cd /data/www/gitm/bareserver/mse.git/hooks cp post-receive.sample post-receive #把sample改为配置. vi post-receive#添加最后一行: GIT_WORK_TREE=/data/www/gitm/workd/ git checkout weixin -f
-
为了安全可以考虑单独建用户. 对的这是第四步, 不过我没做. 汗……
- 这个有点复杂, 有空再研究.
- git指定远程源为默认源
#改变git的default remote. gp -u <remote_name> <local_branch_name> git push #就是gp
-
git真对远程的rebase操作
gf xxx #git fetch 远程源xxx git fetch #这个就是gf grb xxx/master #rebase xxx源的master git rebase #这个就是grb