一、版本控制工具
1、集中式
N个文件放到一个中心服务器上。只要能连上中心服务器,就可以提交或download文件。CVS和SVN都是集中式版本管理工具
但集中式存在一定的局限性,只有连接上中心服务器,才可以进行文件管理。
2、分布式
每一个拥有版本库的人都可以在不连网的情况下,进行代码提交。在效率上比集中式高很多。Git
二、Git的安装
1、Windows环境
直接在github官网下载github安装即可。
2、linux环境
使用yum installgit命令执行安装。安装完成后执行git –version 或git –help查看git版本和帮助命令
三、Git常用操作
1、创建项目
在github上创建项目,复制项目url ,到linux上执行gitclone url命令。将该项目克隆到linux中
2、查看git当前状态
使用git status 可查看git 当前文件状态,例如有哪些文件已更新但尚未被提交等。
3、修改文件并查看文件状态
例如修改readme ,同时添加diary文件,执行gitstatus 便提示该两个文件的状态:readme 文件被修改但尚未提交 ,建议使用git add 命令添加;dairy 文件新添加,建议使用git add 命令添加
4、提交文件
例如添加diary文件,并执行commit命令 ,提示也可执行git reset diary 命令,撤销对diary文件的操作
此时可选择执行git commit命令,提交该修改文件。同时会弹出要求补充关于本次提交的日志记录。填写好保存即可。
再次使用git status 发现diary文件已提交。无需进行版本操作
5、将git上的修改同步到github
返回github ,并未记录diary文件的此次提交。原因是上面所有操作仅停留在本地工作区,并未提交到github上来进行维护。当本地服务器挂掉了,那本地工作区提交的内容就无法找回,为了避免,所以使用git push 命令,将文件发布到github上。好处在于可防止文件丢失同时也方便其他小伙伴来获取文件内容
笔者在执行github同步时有两个常见错误,解决方案如下:
1) error 403 服务器拒绝请求
解决方案:修改vim .git/config 将 https://github.com/linxi1209/test.git 修改为如下
2)Gtk-WARNING
解决方案:执行 unset SSH_ASKPASS 或echo 'unsetSSH_ASKPASS' >> ~/.bashrc && source~/.bashrc
再次执行git push ,输入git password,同步成功。此时,在github上可见当前2次修改后提交的文件及日志记录
四、Git Github Gitlab的关系
Git
版本控制工具,作为一个分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。
Github
一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等。作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户。
随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。
GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。
GitLab
基于Git的项目管理软件,GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
Github和Gitlab都是基于git的,可以说是git的衍生品。