1. Windows-Git 下载安装
官网下载地址:点击下载
官网下载太慢的解决方案 : 点击下载
2 Git公钥生成与配置方法
2.1 公钥的用途
许多公司的代码仓库及第三方代码托管平台,使用的都是基于公钥的SSH认证方式(公钥加密,私钥解密)。
Git推荐使用SSH协议的原因 使用SSH协议可以避免每次push
输入密码。 git@github.com开头的就是SSH协议。 使用Https协议则每次都要输入用户名和密码。
公钥是代码仓库服务器验证本地机器的一种身份识别方式。入职一家新公司后,公司的git服务器管理员,会要求你把你的git公钥通过邮件的方式发给它,配置好之后,以后每次向远程代码仓库提交代码,就不用输入用户名和密码啦。
2.2 生成公钥
这里插一句,如果感到git bash的窗口太小或者字体太小,可以自己进行调整。调整的方式是,打开git bash命令窗口后,在命令窗的标题栏,鼠标右键,然后选择options,安装下面的操作进行设置
// 窗口尺寸设置
options --> windows -->修改行数(高度)+列数(宽度)
// 窗口字体设置
options --> text -->设置字体大小
复制代码
2.2.1 配置用户名和邮箱
在公司使用的话,用户名建议配置成自己的真名,这样查看代码修改者的时候,比较好找。git config命令有三种作用域。
# 对当前仓库有效
git config --local
# 对当前登录者有效,对所有仓库都有效
git config --global
# 对登录这台电脑的人都有效,对所有仓库都有效
git config --system
复制代码
如果配置项比较多,可以在这些指令后面加 -e 参数,打开配置文件进行配置。编辑完先按esc, 然后再按shift+:组合键,最后在命令行输入wq保存退出
这里明显应该选择git config --global配置命令。
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
复制代码
2.2.2 生成密钥
ssh-keygen
生成秘钥过程会有三次问询交互。第一次是询问生成秘钥存储路径和名称,默认存储位置是 /c/Users/用户名/.ssh/id_rsa
, 不想更改的话按回车键。第二和第三次是要求你输入两次私钥密码。用于查看秘钥时的认证,一次是设置密码,一次是确认密码, 如果你不想在使用密钥时输入口令,按回车跳过即可。
ssh-keygen -t rsa -C “上一步的邮箱地址”
复制代码
2.2.3 查看公钥
cd ~/.ssh && ls
cat id_rsa.pub
复制代码
2.3 配置公钥
登录个人或企业的git网站,在用户设置-->SSH公钥里面 ,给公钥起个有意义的名称,将生成的公钥粘贴到公钥输入框里(注意要删除公钥末尾的空白或者换行符),点击保存,就可以了。
2.4 Git管理多个SSH密钥,Git多帐号配置
创建步骤:
2.4.1 在每个项目下,单独配置用户名和邮箱地址,为不同项目生成密钥对,生成时指定私钥名称
git config --local user.name "你的名字"
git config --local user.email "你的邮箱"
复制代码
ssh-keygen命令生成SSH-KEY密钥对文件时,需要输入文件存储路径,为不同账号起不同的名称
ssh-keygen -t rsa -C "test@126.com”
复制代码
2.4.2 在~ssh文件夹下,创建一个config文件,配置每个账号域名、用户名 、 验证方式、私钥文件路径
Host github.com
HostName github.com
User test@126.com
PreferredAuthentications publickey
IdentityFile /c/Users/用户名/.ssh/ssh/id_rsa_github
Host oschina.com
HostName oschina.com
User test@126.com
PreferredAuthentications publickey
IdentityFile /c/Users/用户名/.ssh/ssh/id_rsa_github
Host gitee.com
HostName gitee.com
User test@126.com
PreferredAuthentications publickey
IdentityFile /c/Users/用户名/~ssh/id_rsa_gitee
复制代码
HostName
是服务器的地址,User
是用户名,PreferredAuthentications
是验证方式,IdentityFile是私钥文件路径
3 Git仓库创建
分为两种情况,一种是没有仓库,一种是已有仓库,先看第一种,从零创建仓库,然后推送到远程
3.1 从零开始创建本地库,并推送到远程
git init 目录名 新建一个本地仓库
git add README.md -- 将README.md文件加入到仓库中
git commit -m "提交描述" -- 将文件提交到本地仓库
git remote add origin "远程仓库地址" -- 添加远程仓库,origin是一个远程主机的别名,名称可以随意取,一个远程主机上可以有多个远程仓库
git push -u origin master -- 将本地仓库push到远程主机origin的master分支,并将origin设为默认远程主机 -u参数设置默认远程主机,后续push代码,不写主机名的话,就是默认主机
复制代码
3.2 克隆已有仓库到本地
git clone /path/to/repository // 克隆本地库
git clone git/ssh/http[s]/ftp[s]/file/rsync:username@ip/path/to/repository // 克隆远端库
复制代码
git clone的本质就是把Git目录里面的内容拷贝过来,一般Git目录里有成千上万的各种对象(提交对象,树对象,二进制对象, tag对象......),如果逐一复制的话,其效率就可想而知。如果通过git、ssh协议传输,服务器端会在传输前把需要传输的各种对象先打好包再进行传输;而http(s)协议则会反复请求要传输的不同对象。如果仓库里面的提交不多的话,前者和后者的效率相差不多;但若仓库里有很多提交的话,git、ssh协议进行传输效率更高。不过现在Git对http(s)协议传输Git仓库做了一定的优化,http(s)传输现在也能达到ssh协议的效率 。