转载自http://blog.csdn.net/android_zyf/article/details/64175941
一.Git是什么?
Git是一个版本控制系统。
版本控制系统,是设计用于跟踪文件随时间变化的状态的一款软件。
Git是一个分布式的版本控制系统。
在Git中参与项目的每个程序员不仅能够拥有文件的当前状态,还能拥有项目完整的历史纪录。
二.GitHub是什么?
GitHub是一个网站,可以向该网站上传一个Git数据库副本。使用GitHub可以使你与他人合作一个项目变得更加容易。
GitHub提供了如下机制:
1. 分享库的共享
2. 分叉(forking:A复制一个B的项目到自己的账户下,修改后再提交,B能看到A修改的内容,但B原本的项目是不会有变动的)
3. 拉取请求(pull request)
4. 提出问题(issue)
5. 维基百科搜索(WiKi)
这些功能使得团队开发能更有效地对所做的修改进行说明、讨论与评估。
三.为什么要使用Git?
个人开发
1. 可以回滚
2. 可以查看项目所有的修改记录,历史版本
3. 对改动原因进行记录
4. 老大再也不怕我xjbg出问题了,可以回滚
5. 不同的分支可以记录不同的状态
团队开发
1. 多人合作对一个项目进行更改时,git能够自动合并冲突的地方,如果自动合并失败,会提示冲突的位置,方便修改。
2. 历史记录的合并分支,多人合作时,可以每个人做自己负责的模块,最后合并一下就可以了。
四.为什么要使用GitHub?
- GitHub可以用来存储Git仓库,而且还有一些实用的功能。
- 文档需求:提出问题(issues)可以记录缺陷或指定新的功能,然后团队再一起开发(就是产品经理提需求了,整个在一个Group的人都能看到)。
- 分支:分支(branches)和拉请求(pull requests),可以在不同的分支下进行合作。
- 可以在拉请求的历史中观察到是谁改动了项目,对改动的变化提出评论或意见。
五.关键概念
- 提交(commit):提交更改到仓库(本地Git仓库与GitHub仓库是两码事)。
- 提交信息(commit message):每次提交的时候,需要提交一个信息,描述这次提交都做了什么。
- 分支(branch):像树状图一样,每个独立的分支都是项目的一个版本,分支都可以与master合并。
- 主分支(master branch):所有的Git项目在最初创建时都会默认创建出一个分支,这就是主分支。在开发中,写一个新功能的时候,都是先建立一个分支,在该分支上完成功能并测试,通过后由项目leader将该分支merge到master上。
- 功能分支(feature branch):不常用。
- 发布分支(release branch):如果有一个手动QA(质量管理)流程,或者必须要支持旧版本的软件时,需要一个发布分支来放必要的补丁与更新记录。功能分支和发布分支没技术区别,只是在团队间讨论的时候,有助于区分类别。
- 合并(merge):merge可以将一个分支上的全部内容归并到另一个分支上,一般就是将分支merge到主分支上。
- 标签(tag):常用于记录发布版本,在版本发布的时候给一个tag,这样就能记录该版本的代码是何时生成的。
- 查看(check out):一般就是查看某一个分支上的操作记录。
- 拉取(pull request):一般用来从远程仓库拉取分支中的代码到本地,也可以从本地仓库中拉取分支代码到当前工程中。
- 提出问题(issue):GitHub的提出问题的功能,一般遇到问题,可以将出现问题的场合,通过issue的方式记录。
- 维基(WIKI):一个轻量级Web页面创建方式,创建的Web页面之间可以通过链接互相联系。GitHub中的项目通常使用WIKI进行文档记录。
- 克隆(clone):从GitHub上下载一个副本到本地,操作后可以pull上去。
- 分叉(fork):A复制一个B的项目到自己的账户下,修改后再提交,B能看到A修改的内容,但是B原本的项目是不会有变动的。