Git 简介
Git 是目前世界上最先进的分布式版本控制系统。
使用多个 SSH Key
平时基本上至少会用两个以上的 git 平台,例如个人项目使用 Github 或国内的码云,工作项目则使用内部基于 Gitlab 的系统,这里我们最好为每个平台生成单对应的密钥。
首次生成
配置全局 name 与 email
git config --global user.name "<name>"
# eg: git config --global user.name "millylee"
git config --global user.email "<email>"
# eg: git config --global user.email "millylee@qq.com"
生新 SSH 密钥
ssh-keygen -t rsa -C "<email>"
# eg: ssh-keygen -t rsa -C "millylee@qq.com"
如果是个人电脑直接一路回车即可,最后得到 id_rsa
与 id_rsa.pub
,将 id_rsa.pub
添加到对应网站即可,可以使用以下命令测试是否成功。
ssh -T git@<domain>
# eg: ssh -T git@github.com
第二次生成
要以管理员身份启动命令行工具
ssh-keygen -t rsa -C <email> -f ~/.ssh/<filename>
# eg: ssh-keygen -t rsa -C millylee@qq.com -f ~/.ssh/gitee
# 提示不存在文件时,就去 ~/.ssh/ 目录下新建文件
touch gitee
让 Git 记住密码
由于 https 协议比 ssh 传输速度快,所以正常情况我们可能都使用这种方式,但 https 默认不会记住密码,所以可以根据实际情况进行如下配置减少每次 push
时的繁琐操作。
git config --global credential.helper cache # 默认记住15分钟
git config credential.helper 'cache --timeout=3600' # 记住1小时
git config --global credential.helper store # 永久存储
换行符设置
不同操作系统下的换行符不一样,UNIX/Linux 使用的是 LF,早期 Mac OS 使用的是 CR,后来的 OS X 也与 UNIX 一致,而 Windows 下则使用 CRLF。由于 Git 会自动进行换行符转换,如果同一个项目在不同平台下开发,那么提交的时候则无论有没有修改代码,文件的所有行都会显示被修改过。这里建议使用如下配置:
git config --global core.autocrlf input # 提交时转换成 LF,检出时不转换;为 true 时表示提交转换为 LF,检出时转换为 CRLF;为 false 表示提交检出均不转换
git config --global core.safecrlf true # 拒绝提交包含混合换行符的文件;为 false 表示允许提交混合换行符的文件;为 warn 表示提交混合换行符文件时发出警告
提交到多个仓库
有时候我们想把代码提交到多个仓库,这里介绍两种方法。
方法一:添加多个远程仓库
git remote add origin <url1>
git remote add origin2 <url2>
# 提交到多个仓库
git push origin master
git push origin2 master
使用这种方法需要多次 push
,相对来说比较麻烦。
方法二:一个远程仓库多应多个地址(推荐)
git remote add origin <url1>
git remote set-url --add origin <url2>
使用的时候 git push origin master
即可一次性提交到多个远程地址,但 git pull
只能拉取 <url>
中的第一个,即 fetch-url
。