一、 概述
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到很大的项目版本管理。对于svn是集中式的版本控制系统。集中式代码管理的核心是服务器,所有开发者开始新一天的工作之前必须从服务器获取代码,然后开发,如果有就解决冲突,提交。集中式中,所有的版本信息都放在服务器上。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆,在本地机器上拷贝一个完整的git仓库。
Git的优点是适合分布式开发,强调个体;公共服务器和数据量不会太大;速度快、灵活;任意两个开发者之间可以很容易的解决冲突;离线工作。缺点是,学习周期较长,不符合常规思维,代码保密性差。
二、 Github
Github是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,所以叫做github。github可以托管各种git库,并提供了一个web界面。
1. github的基本概念
repository仓库
就是存放自己的项目的库。在github上托管的一个项目,就必须要有一个仓库。如果项目很多,要有多个项目。
star收藏
仓库上面的star,意思为收藏该项目的人数,在github上如果有一个项目获得收藏达到100个就是不错的。
fork复制克隆项目
将别人的项目复制到自己的仓库中。自己的仓库中的项目也可以被别人复制走。别人复制走了项目可以进行改进。自己复制了别人的项目也可以改进。
pull request发起请求
这个是基于fork的,如果有人在项目基础上做了改进,想把自己的改进合并到原有项目中,可以发起请求,原有项目创建者,可以收到这个请求,可以选择是否接收他的改进到自己项目中。也是体现了git的分布式。
watch关注
关注了某个项目,可以得到这个项目的任何更新的通知。
issue事务卡片
发现代码有bug,但是目前没有成型代码,需要讨论时可以使用。
2. 使用github
注册登陆github。
首先,创建一个仓库。
1) 管理仓库,主要是对文件的管理。
新建文件,编写内容,填写提交说明描述,提交。
编辑或删除文件,在仓库中,点击文件可以进行编辑或删除。查看删除文件,通过仓库页的commits查看。
查看文件历史,点击文件可以查看history。
查看提交信息,在仓库页,commits中可以查看提交信息。
上传文件,在仓库页,点击上传文件。
搜索文件,在仓库页,点击find file或者按快捷键t。
下载/检出项目,在仓库页,clone download。
删除仓库,在仓库页,settings,可以设置仓库,删除仓库。
2) issues
issues的作用是发现项目BUG,或者目前没有成型的代码,需要讨论时使用,或者使用开源项目出现问题,都可以使用issue。
在仓库首页,点击issues。提出交流后,对方可以回复。双方都可以关闭或者reopen交流。
3) fork
在别人的仓库中,点击fork可以复制一份仓库到自己的github中。在自己的仓库中可以对项目进行二次开发。
4) pull request
在别人的项目中,可以发起请求。请求别人接收自己对他的项目的改进或修改。
5) 对开源项目贡献的方式
第一种,通过issue与项目作者或维护者交流。
第二种,通过pull request,直接请求项目拥有者是否同意自己做的改进或修改。基本步骤,是fork项目;修改代码;发起request;等待原作者的审核。
三、 Git
使用Git即可以管理github中的项目也可以管理线下项目。
1. 下载、安装和git的基本工作流程
从git的官网下载对应的版本。然后安装。
git的工作区域,包括
工作区(working directory),添加、编辑、修改文件等。
git仓库(git repository),最终确定的文件保存到仓库,成为一个新的版本,并且对他人可见。
暂存区,暂存已经修改的文件,最后统一提交到git仓库中。
向仓库中添加文件流程,首先,创建一个仓库。将文件从工作区提交暂存区git status查看当前区的状态,git add test.c提交到暂存区。然后,将文件从暂存区提交到仓库,先git status查看当前区的状态,然后git commit -m “提交描述”提交到仓库。
2. 初始化及仓库的创建与操作
git安装完毕后,需要进行一些基本信息设置。
右键,进入git bash。
设置用户名,github的用户名,git config --global user.name “tom”
设置用户名邮箱,git config --global user.email “tom@qq.com”
查看设置,git config --list
1) 创建仓库和提交文件
然后,初始化仓库。创建一个文件夹mkdir test。在文件内初始化git,创建git仓库,cd test,进入放仓库的文件夹,git init,初始化。
然后,向仓库添加文件,在bash中可以使用linux的命令实现,touch hello.c,然后,vi hello.c,然后编写文件。然后,git status查看工作区文件的状态。然后,git add hello.c,将文件从工作区提交到暂存区。然后,git status查看文件的状态。然后,将文件提交到仓库,git commit -m “add hello.c”。
2) 修改仓库文件
首先,修改工作区的文件,vi hello.c。然后,git status,查看文件状态。然后,将文件提交到暂存区,git add hello.c。git status查看文件状态。然后,将文件提交到仓库,git commit -m “添加了system”。再次查看文件状态,git status,文件提交成功。
3) 删除仓库文件
删除文件的命令是,rm hello.c。从git中删除文件的命令是git rm hello.c。然后,提交删除操作,git commit -m “删除了hello.c”。
3. git远程管理仓库
git远程管理仓库,可以实现统一管理代码和备份代码的功能。
首先,将远程仓库(github对应的项目)复制到本地。git clone 仓库地址(在仓库首页查看)。
然后,在克隆的仓库中,创建文件。vi for.c。将文件添加到暂存区,git add for.c。将文件添加到本地仓库,git commit -m “添加for文件”。将本地仓库同步到远程仓库,git push。添加是需要输入用户名和密码,前提是在配置初始化信息是用户名和邮箱信息是正确的。如果需要免用户名和密码同步,在./git/config中,将
[remote "origin"]
url =https://github.com/hellohaha88/ieCollections.git
修改为:
[remote"origin"]
url = https://用户名:密码@github.com/hellohaha88/ieCollections.git
四、 使用github搭建个人网站和项目站点
搭建个人能网站的步骤
1. 创建个人站点,新建仓库,仓库名必须是:用户名.github.io。
2. 在仓库下新建index.html的文件即可,注意仓库里面只能有一个index.html。
搭建项目站点的步骤
1. 进入项目主页,点击settings
在settings页面,在GitHub Pages板块,选择一个分支,点击save,就生成了。
2. 在github pages板块的theme chooser,可以更换主题。
五、使用git搭建git私服
实际上,git私服也是一个git仓库,可以搭建到一台linux服务器上。
第一步,安装git需要的编译环境
yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc
第二步,下载git-x.x.x.tar.gz
解压缩,进入目录cd git-x.x.x
执行autoconf,如果没有autoconf,使用yum安装;
执行./configure
执行make
执行make install
第三步,添加用户
adduser -r -c 'git version control' -d /home/git -m git
执行后会创建/home/git目录作为git用户的主目录。
第四步,设置密码
passwd git
第五步,切换到git用户
su git
第六步,创建git仓库
注意,一定要以git用户的身份创建仓库,否则创建的仓库因为权限问题不能被外界访问。
cd /home/git
mkdir rep1
cd rep1
git --bare init
注意:如果不使用“--bare”参数,初始化仓库后,提交master分支时报错。这是由于git默认拒绝了push操作,需要在.git/config添加如下代码:
[receive]
denyCurrentBranch = ignore
推荐使用:git --bare init初始化仓库。
git私服中仓库的url链接形式为:ssh://git@192.xxx.xx.xxx/home/git/rep1
其中,git为用户名。