git是开源跨平台的分布式版本控制管理工具,由于分布式不存在客户端和服务端,每台机器都是等价的,都有工作区和版本库,开发人员无需联网就可直接在本地进行工作,工作成果可直接保存到本地版本库,任何两台机器都可通过相互交换各自的版本库来更新信息。为确保时刻都能进行信息交换,通常选择一台24小时运行的机器作为远程版本库,所有开发人员以此为中介来进行信息交换。由于每台机器都维持一个版本库,即使远程版本库崩溃也不会有任何问题,可再选择任何一台未崩溃的机器来充当远程版本库。
开源的集中式版本控制管理工具有最早的cvs以及最流行的cvs的改进svn,集中式分客户端和服务端,其中版本库在服务端,客户端只有工作区,只能clone服务端有限的目录到本地,且必须联网才能提交代码到版本库。如果服务端崩溃,开发人员都将无法工作。
git是一个版本控制管理软件,github是一个以git为中心的社交网站,提供git服务,通过其可直接使用git服务,本地无需安装任何git软件,如可通过该网站push、pull、merge等推拉合代码到远程github上我们自己注册的网址空间,但是该空间强制开源,谁都可以看到,可使用oschina提供的git服务申请私有库。
工作区在计算机上的体现就是一个目录,与其它目录区别是其下有一个隐藏的 .git 目录,该目录就为版本库,是git的核心,不要随便手动修改此目录的内容。版本库中有三个最重要的文件,index,称为暂存区stage;分支文件,如master;HEAD文件,保存指向当前版本库中当前分支的指针。
// 当本机版本库与远程版本库连接时,要求本机给出用户名和密码
// git通过为每一个版本库指定用户名和邮箱来进行分布式管理
// 设置输入一次记住密码,以后无需再重新输入
git config --global credential.helper store
// 设置用户名和邮箱,用户名通常使用自己的erp账号,参数global表示本机所有版本库都使用该配置
git config --global user.name ".."
git config --global user.email ".."
// 远程版本库用户名通常为origin,查看与本机当前版本库连接的远程版本库
git remote
// 本机与远程连接,使用http协议,第一次连接要输入用户名和密码;使用ssh协议,第一次连接要给出公钥
// 三个个回车后在用户目录下生成.ssh目录,其中有git生成的公钥和私钥,将公钥给服务端用于传输,私钥不可泄露
ssh-keygen –t rsa –C "邮箱"
// 创建一个空目录作为项目目录,在其下生成隐藏的.git目录为版本库,项目目录为工作区
git init
// clone远程版本库的master分支到本地当前目录
// git默认以url最后一级目录名去掉.git后名字作为clone下来项目的目录名,可修改,但不要移动
git clone url
// clone远程版本库的指定分支到本地当前目录
git clone –b 分支名 url