前准备期
- http://www.cnblogs.com/GJ-ios/p/5645633.html
- 廖雪峰的Git教程
- 使用环境 : windows 10
- Git客户端下载 : https://git-for-windows.github.io/
- 在github官网申请一个账号 : https://github.com/
- 工作区 : 与.git文件夹同级的其他文件夹或者子文件夹。
- 操作原则 : 所有新添加/删除/修改的文件 必须先添加到暂缓区,然后才能提交到HEAD指向的当前分支中。
- 单人开发 :只需要一个本地库,不需要与他人共享代码,只负责管理自己代码即可;例如提交代码,删除代码,版本控制等等。
- 多人开发 : 需要一个共享版本库,共享版本库的形式:(1)本地共享库:文件夹/U盘/硬盘。(2)远程共享库:自己搭建git服务器/ 托管到第三方平台(例如github, oschina)
- SSH概念 :http://blog.csdn.net/left_la/article/details/41678935在客户端来看,SSH提供了两种级别的安全验证:
- 第一种级别:(基于密码的安全验证),即账号+密码,但是可能有别的服务器在冒充真正的服务器,无法避免被“中间人”攻击(man-in-the-middle)
- 第二种级别(基于密钥的安全验证),这里的密钥即包括公钥、私钥。这些都属于密码学的概念,容易混淆。接下来阐述下加密、认证、公钥、私钥的概念和关系。
- 首先明确加密、认证两个概念:加密是将数据资料加密,使得非法用户即使截获到加密过的资料,也无法获取正确的内容,所以数据加密可以保护数据,它的重点在于数据的安全性。身份认证是用来判断某个身份的真实性,其重点在于用户的真实性。两者的侧重点是不同的。
- 其次了解公钥和私钥的概念:现代密码体制中加密盒解密采用不同的密钥(公钥和私钥),也就是非对称密钥密码系统,是从前对称加密方式的提高与增强。每个通信方均需两个密钥:公钥和私钥。公钥用来加密/验章用的,私钥用来解密/签章。
- 公钥和私钥成对出现
- 公开的密钥叫公钥,只有自己知道的叫私钥
- 用公钥加密的数据只有对应的私钥可以解密
- 用私钥加密的数据只有对应的公钥可以解密
- 如果可以用公钥解密,则必然是对应的私钥加的密
- 如果可以用私钥解密,则必然是对应的公钥加的密
- 接下来用电子邮件的方式说明一下原理。收发邮件需实现如下目的:
- A发送给B的内容必须加密,在邮件的传输过程中不能被别人看到。(加密)
- 必须保证是A发送的邮件,不是别人冒充我的。(认证)
要达到发送一个加密邮件的目标,必须发送邮件的双方都有公钥和私钥,且A必须拥有B的公钥,B也必须拥有A的公钥。
当A->B资料时,A会使用B的公钥加密,这样才能确保只有B能解密查看真实内容,即加密机制。
验证方面则是使用签/验章的机制,A传资料给B(当然不只是B,所有有A公钥的人都可以)时,会以A的私钥做签章,因为私钥只有A手里有,如此所有收到讯息的人都可以用A的公钥进行验章,便可确认讯息是由 A 发出来的了,即认证机制。
本地仓库(不共享)
- 初始化一个本地仓库 : 初始化之后就可以使用git进行版本控制。
- 初始化命令 : git init
- 配置仓库 : 配置你的用户名、邮箱地址等等
- 配置名字 : git config [–global] user.name “你的名字”
- 配置邮箱 : git config [–global] user.email “你的邮箱”
- 查看配置 : git config -l
- 基本操作
- 创建并提交
- touch Test.java
- git add .
- git commit -m “注释”
- 修改并提交
- git add .
- git commit -m “注释”
- 删除并提交
- git rm person.h
- git commit -m “注释”
- 日志查看
- git log
- git reflog
- 版本回退
- git reset —hard HEAD 重置到当前版本
- git reset —hard HEAD^^ 重置到上上个版本
- git reset ——hard HEAD2 重置到往上2个版本
- git reset —hard 七位版本号 重置到指定版本…
- 创建并提交
共享仓库
- 本地共享仓库 : 本地电脑/U盘等, 在本地面对面操作
- 搭建本地共享库 : git init –bare
- 远程共享仓库 : 自己搭建的Git服务器/github托管/oschina托管,可通过网络远程操作(主要介绍利用github托管)
- 在本地创建SSH Key:ssh-keygen -t rsa -C “youremail@163.com”
- 登陆github,打开设置,“SSH and GPG keys”页面:
- 点击 Nwe SSH Key,添加你刚刚生成的公钥内容,标题自定义需要ssh key 是为了让你有权限提交、修改等。如果你仅仅是想从远程仓库上clone,则不需要ssh keys,就比如你从github上下载别人的代码
- 在github上创建一个新项目:New repositories 在创建完之后,会有这样一个界面目前,在github上的这个Test仓库还是空的,github告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。现在,我们根据github的提示,在本地的Test仓库下运行命令:
- git remote add Test git@github.com:spilledyear/Test.git
- 把本地库的所有内容推送到远程库上:
- git push -u Test master
- 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:
- 从现在起,只要本地作了提交,就可以通过命令:git push origin master
- SSH警告:当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
The authenticity of host ‘github.com (xx.xx.xx.xx)’ can’t be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added ‘github.com’ (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。
如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。