小白看了这个之后可以让你知道怎么使用github,赶快get起来吧!不废话了,直接干活,由于很多,请耐心看完~
GitHub安装步骤:
1、下载git
1.2 打开 .dmg 格式磁盘镜像,根据步骤进行安装。
其中带有一个正在解包图标的文件(扩展名为 .pkg )是 Git 的安装程序,另外的两个脚本程序,一个用于应用的卸载(uninstall.sh ),另外一个带有长长文件名的脚本可以在 Git 安装后执行的,为非终端应用注册 Git 的安装路径,因为 Git 部署在标准的系统路径之外 /usr/local/git/bin 。
(等待安装中。。。。)
3、配置git和github
3.1 通过Homebrew安装git。 打开终端,输入:brew install git
3.2 git安装完成之后,输入:~/.ssh //检查计算机ssh密钥
3.3 如果没有提示:No such file or directory 说明你不是第一次使用git,执行下面的操作,清理原有ssh密钥:
ls config id_rsa id_rsa.pub known_hosts
$ mkdir key_backup
$ cp id_rsa* key_backup
$ rm id_rsa*
3.4 获取密钥:
Enter file in which to save the key (/Users/faner/.ssh/id_rsa):
# 直接回车
Enter passphrase (empty for no passphrase):
# 输入密钥文件授权密码
Enter same passphrase again:
# 确认密钥文件授权密码
Your identification has been saved in /Users/faner/.ssh/id_rsa.
Your public key has been saved in /Users/faner/.ssh/id_rsa.pub.
3.5 终端输入:ls 出现:id_rsa id_rsa.pub key_backup
3.6 终端输入:cat id_rsa.pub 获取GitHub红框中所需要的Key。
注:为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
在finder中如何找到id_rsa和id_rsa.pub文件:打开finder,按下cmd shift G,然后输入~/.ssh,确定,你就会看到你所需要的文件
1
插播一则小知识
Git——The stupid content tracker(傻瓜内容跟踪器)
Git是Linux的缔造者Linus Torvalds为了帮助管理Linux内核源码而开发的一款免费、开源的分布式版本控制系统。
分布式Git相比集中式CVS/SVN的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
如果用CVCS的话,差不多所有操作都需要连接网络;Git中的绝大多数操作都只需要访问本地文件和资源,由于本地磁盘上就保存着所有当前项目的历史更新,因此可以不用联网且处理起来速度很快。
大多数 Git 服务器都会选择使用 SSH 公钥来进行无密码登录连接。
SSH——Secure SHell(安全外壳协议)
SSH是建立在应用层和传输层基础上,默认端口是22,为远程登录会话和其他网络服务提供安全性的协议。SSH是替代Telnet(默认端口是23)和其他远程控制台管理应用程序的行业标准。
SSH服务最早是由芬兰的一家公司开发的UNIX系统上的一个程序,后来迅速扩展到其他操作平台,现在已经发展到SSH2版本。SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。由于版权和加密算法等因素的影响,很多人开始转用开源免费的openSSH(Linux/Mac OS X标配)。
SSH提供基于密钥的认证机制,你必须为自己创建一对非对称密钥(public/private key pair),并把公钥放到需要访问的服务器上进行授权。SSH1使用RSA(RonRivest、AdiShamir、LeonardAdleman)加密密钥,SSH2使用DSA(Digital Signature Algorithm,数字签名算法)密钥保护连接和认证。RSA和DSA这两种加密算法都是非对称加密算法。
所谓“SSH公钥认证免密码登录认证机制”,原理如下:
(1)SSH客户端提前将SSH公钥储存在远程SSH服务器上,然后SSH客户端携带公钥向远程SSH服务器(known_hosts)发起登录请求。
(2)远程SSH服务器收到该请求之后,先在该服务器上的authorized_keys寻找你上传授权过的公钥,然后把它和你发送过来的公钥进行比较。
(3)如果两个公钥一致(Key Exchange Success),远程SSH服务器会向用户发送一段使用SSH公钥加密过的随机字符串进行身份质询(Challenge)。
(4)SSH客户端用自己的私钥解密后再发回给远程SSH服务器,远程SSH服务器对比回包中解密出来的随机字符串是否一致。如果一致,则证明用户(公钥或身份)是可信的,直接允许登录shell,不再要求密码。
4.测试与github服务器的SSH连接:
4.1 当没有使用ssh-keygen生成公钥时,终端执行ssh -T git@github.com,
将会提示can`t be estabblished for permission denied without public key(SSH不支持匿名访问):
4.2 出现Are you sure you want to continue connecting (yes/no)? 的时候,敲yes,回车 #这里表示接受认可远程主机的公钥(可以核对官方给出的公钥指纹)。
出现Warning: Permanently added the RSA host key for IP address‘192.30.252.131’to the list of known hosts
#github.com服务器主机已经得到认可被添加到~/.ssh/known_hosts中,可以执行cat ~/.ssh/known_hosts查看该文件。
实际上保存的是github.com的SSH RSA公钥(格式类似id_rsa.pub中的ssh-rsa …),也即SSH客户端(本机)和SSH服务器(github.com)之间相互交换了SSH公钥。下次再连接github.com,系统认出它的公钥已经保存过本地了,从而跳过警告部分。
4.3 Enter passphrase for key ‘/Users/jiajia/.ssh/id_rsa’: #在此输入你之前设置的密码
4.4 Hi Timeisnotold! You’ve successfully authenticated, but GitHub does not provide shell access. #表示连接成功
提示“Hi !You’ve successfully authenticated”,表明你已经成功为本机设置SSH密钥对,且与github服务器身份校验通过。此时.ssh文件夹中会多出个文件konwn_hosts
此上为这一个步骤正常的流程,but,然而我却并没有看到01里面的提示,有些人可能会和我遇到一样的问题,所以在此我也把我遇到的问题贴出来:
我在终端中敲ssh -T git@github.com,
出现的是ssh: connect to host github.com port 22: Operation timed out;#SSH 默认端口 22 被屏蔽时:
解决方案是:
(首先得看你当前是在哪个文件下,如果你是在根目录下,则需要进入ssh文件,假设现在我们处于根目录下,毕竟我是重启了我的终端的)
终端输入:cd ~
终端输入:cd .ssh/ #至此你已经到了你的ssh的文件夹了
终端输入:touch config #在ssh目录下创建一个config文件,
Host github.com
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
#以上代码表示使用 443 端口访问 github
4.5 现在就再次输入ssh -T git@github.com,根据上述的01–04的步骤往下走,就ok了。
2
在此插播一个小片段:Git常用命令介绍
git init –初始化项目,刚开始初始化项目的时候使用
git clone –从服务器上克隆到本地,如果服务器上面已经有项目了,直接使用这个命令clone到本地进行使用。
git status –查看版本信息
git add –添加本地文件
git commit –提交更改
git push –tags –将更改推送到服务器
Github使用教程:
1、上传本地代码到远程库
1.1 \添加远程库。
Repository name:通常就写自己自己要建的工程名。
Description:就是你对工程的描述了。
选择Public。
如果不想其他人下载,Initialize this repository with a README可以不用选择
创建好库之后,效果如下:
touch README.md //新建一个记录提交操作的文档
git init //初始化本地仓库
git add README.md //添加记录提交操作的文档
git commit -m “first commit”//提交到要地仓库,并写一些注释
git remote add origin https://github.com/Timeisnotold/Grunt_test.git //连接远程仓库并建了一个名叫:origin的别名。
1.2 情景一:你的远程库里面没有文件;我们按如下的流程创建并上传README.md文件,操作如下:
cd 你的项目文件名
touch README.md
git init
git add README.md
git commit -m “first commit”
git remote add origin https://github.com/Timeisnotold/Grunt_test.git #在设置别名的时候,出现“fatal: remote origin already exists.”错误,说明该别名已经存在,可以另外建一个别名,或者使用“git remote rm origin”命令删除原来的别名,然后重新执行“git remote add origin git@github.com:yourname/xxxx.git”
git push -u origin master #第一次推送master分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
你需要输入你的github用户名和密码,然后你将会在你的仓库中看到你的README.md文件
3
在此插播一个小知识
find . -name “.svn” | xargs rm -Rf #删除文件夹下的所有 .svn 文件
find . -name “.git” | xargs rm -Rf #删除文件夹下的所有 .git 文件
情景二:我们已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。操作如下:
cd 你的项目文件名
git init
git add . #添加需要提交的文件夹,使用git add . 则添加全部
git commit -m “上传项目源代码” #提交到本地仓库。切记上传文件时,一定要先commit到本地仓库,才能进行push提交,否则会显示Everything up-to-date(意思就是目前的远程仓库的内容跟本地仓库对比后,没有做修改,是最新的)
你也可以按照你的需求一个一个的添加文件,例如:git add 文件名
此时你刷新你的Github,你会看到你的所有文件上传成功了!
2、从远程库克隆到本地
上面的第1步讲的是先有本地库,后有远程库的时候,如何关联远程库;
现在,咱就从0开始,最好的步骤就是:先创建远程库,然后从远程库clone到本地
2.1 创建一个新的仓库,名为:Git_test。
注意勾选箭头处的按钮,这时GitHub会自动为咱创建一个README.md文件,创建完毕之后即可见:
2.2 开始克隆,操作如下:
创建一个新的空文件夹,因为接下来要将远程的文件夹克隆到这个目录下,我的命名为:Git_test
cd Git_test(你新创建的文件夹路径)
git clone https://github.com/Timeisnotold/Git_test #远程的文件夹克隆到你新建的文件夹内
2.3 检查是否clone成功
打开你的项目文件夹,如果当你看到如图所示,则说明你clone成功了~
2.4 整理文件夹,将Git_test里的.git文件夹和README.md一起复制到最外层的Git_test文件夹中,然后删掉里面的空Git_test文件夹,然后如图所示:(由于创建的仓库和我本地建立的文件夹名是一样的,所以不要弄糊涂了哟)
2.5 修改clone过来的项目并更新到GitHub,操作如下:
根据你的项目需求给Git_test里添加新文件夹
git add .
git commit -m “我在本地做了修改”
git push origin master #将提交的内容同步到远程版本库中