1.什么叫git?什么叫github?l两者之间的差别?
![](https://img-blog.csdn.net/20161027173047947?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.4.5.分支合并(远端master和本地master不是相同的分支)
![](https://img-blog.csdn.net/20161028104420762?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.1.根据自己百度和之前使用svn,vss的经验的描述:
git:和vss,svn一样都是一个分布式的版本控制系统,通过链接和相应的权限认证之后,将自己本地的代码push到远程的仓库中,或者将远程的项目版本download到本地。在多人协作开发项目中起到至关重要的作用。
github:就是一个管理代码的平台,每个人拥有自己的一个账号,可以上传自己的代码进行版本管理。
1.2.深入学习之后结果:
2.github的使用:
2.1.什么是git:是一款软件,用来进行版本控制。是一套命令行工具。
什么是github:一个网战,开源项目的托管平台。不管你开发什么项目都有可能在github上找到现成的项目代码进行参考。github提供可视化界面。
github网战+github客户端进行操作和使用git版本控制的各种功能。本地编辑和调试非常方便,我们如果使用git的话,需要使用命令行进行版本管理,我们也可以使用本地github客户端进行版本管理。
对于一个项目,我们先在自己的账号下克隆仓库以及克隆到本地的仓库,进行修改之后pull request,对方接受你的request,则修改完成。
2.2.github的基本操作
2.2.1网站操作:
1.新建仓库
2.修改提交新版本
3.关注其他项目
4.删除一个现有得仓库
5.重命名一个现有仓库
2.2.3github记录版本顺序的原理
每个版本都有自己的一个40位版本号,每个版本都存储自己的版本号以及上一个版本的版本号
2.3.svn和GitHub的区别
svn:集中式的版本控制系统
GitHub:分布式的版本控制系统
svn集中式的版本控制系统:有一个中央服务器,它保留着已提交的版本,所有人都需要先download最新的版本修改提交。
github分布式的版本控制系统:所有的电脑上都有所有的版本,没有 一个中央的服务器,所做的修改只需要推送给对方就可以了。
在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
区别:如果是svn那种方式来进行项目协同管理,如果中央服务器出现故障则整个项目也无法恢复了,而且svn是需要联网的,不管是推送还是下载都需要一定的时间
如果是git这种方式,每个开发的机器上都有历史版本,git具有强大的分支管理。
2.4.github客户端的使用
2.4.1.github访问慢的解决办法
1.翻墙:推荐fg759p.zip 地址:http://pan.baidu.com/s/1kUKkWKJ
2.github之所以访问慢的问题:GitHub的某些域名被污染了,我们可以通过修改本地的host文件,将对应的IP和域名进行绑定。
host文件:我们在访问某些网址时,先要进行域名解析。常常先看host文件中是否有对应的ip和域名的对应。
2.4.2.github客户端安装失败的办法
失败的日志是这样的:激活https://github-windows.s3.amazonaws.com/GitHub.application失败
+下载***失败
想下载快点儿的话可以使用翻墙软件
解决办法:使用IE浏览器
Internet选项-->安全-->可信站点-->站点按钮-->添加 https://github-windows.s3.amazonaws.com/ ;或者去除复选框“对该区域中的所有站点要求服务器验证(https:)”的钩,直接加入 github-windows.s3.amazonaws.com ; -->在IE浏览器中打开 https://github-windows.s3.amazonaws.com/GitHub.application
注意:一定加s,下载不成功重复下载。
2.4.3.客户端的基本使用
1.add:(添加一个现有的仓库)
create:新建一个仓库(和网站上新建仓库一样)
clone:已有文件
2.整个操作流程(GitHub,Local)
+下载***失败
想下载快点儿的话可以使用翻墙软件
解决办法:使用IE浏览器
Internet选项-->安全-->可信站点-->站点按钮-->添加 https://github-windows.s3.amazonaws.com/ ;或者去除复选框“对该区域中的所有站点要求服务器验证(https:)”的钩,直接加入 github-windows.s3.amazonaws.com ; -->在IE浏览器中打开 https://github-windows.s3.amazonaws.com/GitHub.application
注意:一定加s,下载不成功重复下载。
2.4.3.客户端的基本使用
1.add:(添加一个现有的仓库)
create:新建一个仓库(和网站上新建仓库一样)
clone:已有文件
2.整个操作流程(GitHub,Local)
本地编辑修改
提交修改 (可以只选择部分提交)
撤销版本
提交到GitHub上
同步
每次修改之后都要同步
2.4.4.github分支操作
1.github分支得简单操作
创建分支,修改分支,提交分支,删除分支(删除远端分支,删除本地分支),修改默认分支
2.分支的作用
我们需要进行新的功能的开发,我们又不想动修改原来的版本,这时我们可以创建一个新的分支,在新的分支上进行修改,这样并不影响原来的分支。
3.分支的原理
一个仓库都有一个默认得master分支
新建一个分支
2.4.5.分支合并(远端master和本地master不是相同的分支)
合并分支到master
update from master 从master更新分支
合并master到分支
pull request--> from ** to** -->在github网站上的pull request上尽行merged
远端master和本地master分支合并,也就是我们所说的同步sysc。
2.4.6.分支冲突
分支情况有一下两种:说的
第一种分支融合不存在冲突,融合后结果如下:
这是一个“融合版本”( Merge Commit )这个合并挺特殊,里面一般没有修改内容,它的作用主要是把两个分支合并起来。怎么合并的呢?把 master 的内容 sync 到 github.com 上,然后查看一下这个 m
erge commit ,会发现它有两个 parent 。merge之后,master分支指向了merge commit 也就自动拥有了 idea 分支上的
C3
这个版本了。idea 分支一般这会儿就可以删除了。
远端和本地分支合并,如果如上,不是修改的相同部分,不会发生冲突,这样我执行 sync,跟本地两个分支合并是一样的,一般也会生成一个 merge commit,在本地客户端和 github.com 上的历史线都可以看到。
分支融合出现冲突,有以下两种情况:
1.第二种分支情况,比如我们在新分支上开发着新的功能,这时master分支上有一个bug需要修改,我们会到master分支上修改,commit之后再到新分支上修改,如果我们修改的不是相同的代码,不会发生冲突。进行如下融合:
如果我们修改的是相同位置的代码,则会发生冲突。git不知道应该听谁的,只会把冲突得位置报出来,
test project for gitbeijing book
<<<<<<< HEAD
BBB
=======
AAA
>>>>>>> idea
<<<<<<< HEAD
BBB
=======
AAA
>>>>>>> idea
修改冲突只需要将冲突的三行标识符删去,留下需要的版本。提交修改即可。
2.合并远端分支冲突
在特定条件下,点 sync 按钮两个分支合并会不使用融合( merge )方式,而采用“变基”( rebase )方式,这样最终不会生成一个 merge commit 。但是达成的效果是一样的,也是实现了两个分支代码的合并,处理冲突的方式也一样,所以暂时不必深究。
3.团队使用github协作流程(参考网址:gitbeijing.com/flow/)
3.1. GitHub 工作流程
1.创建一个分支
2.为分支添加版本
3.开启一个pull Request(拉取请求)(pull request的目的就是引发代码审核和讨论)
4.讨论和代码审核
5.合并分支,进行部署
3.2.具体团队协作流程
1.为队员创建一个写权限(settings-->Collaborators-->add)协作人员和建立项目人员具有相同的权限
2.一方开分支,添加新的版本,这样队员在自己的账号下也可以看到,可以做一些评论
3.修改好之后,可以pull request :指出哪个分支和哪个分支进行对比,代码对比会被标明,pull request 还需要添加一些解释
4.需要进行版本融合,删除原来的没有用的分支
3.3.开源项目的开发流程
1.fork某一个开源项目(拷贝)
2.再同步到本地,进行相应的开发
3.然后再pull request给项目的创建者
4.