快速开始
简介
GitHub是开源代码库以及版本控制系统,Github拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。作为一个分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。GitHub可以托管各种git库,并提供一个web界面;
创建远程库
首先注册GitHub账号。由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:1
$ ssh-keygen -t rsa -C "youremail@example.com"
这里需要把邮箱地址换成自己的邮箱地址,然后一路回车,使用默认值即可;
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
点“Add Key”,你就应该看到已经添加的Key:
因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。
添加远程库
本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:
在Repository name填入”new repository”,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
目前,在GitHub上的这个”new repository”仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
将远程的库拉渠道本地,命令如下:1
$ git remote add origin git@github.com:michaelliao/learngit.git
下一步,就可以把本地库的所有内容推送到远程库上:1
$ git push -u origin master
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!
创建与合并分支
创建新的分支,并且切换到新的分支上:1
$ git checkout -b "new branch"
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:1
2$ git branch "new branch"
$ git checkout "new branch"
然后,用git branch命令查看当前分支:1
$ git branch
git branch命令会列出所有分支,当前分支前面会标一个*号。
现在,我们就可以把新创建的分支合并到新的分支上1
$ git merge "new branch"
git merge命令用于合并指定分支到当前分支;
合并完成之后,我们就可以删除刚才创建的新的分支了1
$ git branch -d dev
解决冲突
首先准备新的分支,并且在新的分支上修改文件,并且提交代码;
然后切换到master主分支上,在master上也修改刚才修改的文件,并且提交代码到master分支上;这种情况下,Git无法执行快速合并,但是这种合并往往会产生冲突;
我们可以根据提示,找到冲突的文件;然后根据具体的逻辑解决冲突,并且再一次进行提交代码;最后我们就可以用参数的git log看到分支的合并情况:1
$ git log --graph --pretty=oneline --abbrev-commit
最后删除新创建的分支;