分布式版本控制系统

1.Git,GitHub,GitLab的区别

Git是一个开源的分布式版本控制系统,用于敏捷高效第处理任何或小或大的项目。是Linus Torvalds 为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
Github是在线的基于Git的代码托管服务。GitHub是2008年由Ruby on Rails编写而成。
GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开的代码仓库,只有付费账户可以创建私有的代码仓库。Gitlab解决了这个问题,可以在上面创建免费的私人repo。

2.Git与SVN区别

GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。

2.1 Git与SVN区别

  • 1.GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
  • 2.GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
  • 3.GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
  • 4.GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
  • 5.GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA—1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

3 部署Git服务

创建git仓库
git-server上的操作:

[rooteqfedu.com-]#yum install gitgit-core gitweb-y 
[rooteqfedu.com~]#useraddgit 
[rooteqfedu. com -] passwd git 
[rooteqfedu. com -] mkdir /git-root/ 
[rooteqfedu. com -] cd /git-root/ 
[rooteqfedu. com git-root]# git init --bare shell.git  ##shell名字可以改

Initialized empty Git repository in /git-root/shell.git/ 

注意: 
git init 和 git init --bare 的区别:
使用——bare选项时,不再生成.git目录,而是只生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库的根目录下面.
用“git init”初始化的版本库用户也可以在该目录下执行所有git方面的操作。但别的用户在将更新push上来的时候容易出现冲突。
使用“git init——bare”方法创建一个所谓的裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果你硬要操作的话,只会得到下面的错误("This operation must be run in a work tree")这个就是最好把 远端仓库初始化成bare仓库的原因

[rooteqfedu com git-root]# chown -R git: git shell.git
[rooteqfedu. com git-root]# su -git 
[giteqfedu. com -] ssh-keygen -t rsa 
[giteqfedu. com -]s cd .ssh/ 
[giteqfedu. com ssh]s cp id_rsa. pub authorized_keys 
[giteqfedu. com ssh]s vim authorized_key 
[giteqfedu. com ssh]$ logout 

git仓库测试
git-client上的操作

[rooteqfedu.com~]#ssh-keygen 
[rooteqfedu.com-]#ssh-copy-id git@192.168.1.178 
[rooteqfedu.com-]#gitclone git@192.168.1.102:/git-root/shell.git 
[rooteqfedu. com ~] 1s 
rh shell 
[rooteqfedu com -] cd shell/ 
[root@qfedu.comshell]#vimtest.sh 
[rooteqfedu. com shell]# git add test.sh 
[rooteqfedu com shell]# git config --global user.email "youeexample. com"
[rooteqfedu. com shell]# git config --global user. name "Your Name" 
[rooteqfedu com shell]# git commit -m 'first commit' 
[master (root-commit) 33c5fbf] first commit 
1 file changed, 2 insertions(+) 
create mode 100644 test1.sh 
[rooteqfedu. com shell]# git push origin master 
Counting objects: 3, done. 
Writing objects: 100% (3/3), 230 bytes | 0 bytes/s, done. 
Total 3 (delta 0), reused 0 (delta 0) 
To git@192.168.1.178:/git-root/shell.git 
* [new branch] master - master 

4. Git工作流程

一般工作流程如下:

  • ·克隆Git资源作为工作目录。
  • ·在克隆的资源上添加或修改文件。
  • ·如果其他人修改了,你可以更新资源。
  • ·在提交前查看修改。
  • ·提交修改。
  • ·在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

Git的工作流程示意图:

5. git基本概念

  • .工作区:就是你在电脑里能看到的目录。
  • .暂存区:英文 0 月 stage ,或 1 ndex 。一般存放在” git 目录” ‘ T 的 index 文件( . gitlindex )中,所以我们把暂存区有时也叫作索引( index )。
  • · 版本库:工作区有一个隐藏目录. git ,这个不算工作区,而是 Git 的版本库。工作区、版本库中的暂存区和版本库之间的关系的示怠图:

  • 。图中左侧为工作区,右侧为版本库.在版本库中标记为” index ”的区域是暂存区( stage , indeX 标记为” , master ” ,的是 master 分支所代表的目录树。
  • .图中我们可以看出此时””日 〔 AO ”实际是指向 master 分支的一个””游标”。所以图示的命令中出现日 〔 AO 的地方可以用 master 来替换。
  • · 图中的。 bjects 标识的区域为 Git 的对象库,实际位于’ ” . 91 口。 bjects ”目录下,里面包含了创建的各种对象及内容。
  • · 当对工作区修改(或新增)的文件执行” t add ”命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的旧被记录在暂存区的文件索引中。
  • · 当执行提交操作( git commit )时,暂存区的目录树写到版本斑(对象库)中, master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
  • · 当执行” . git reset H EAD ‘ ”命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
  • · 当执行” , gi t rm 一 cached < file > ”命令时,会直接从暂存区删除文件,工作区则不做出改变。
  • · 当执行” , gi t checkout . ” ’或者” t checkout 一; file > ” ’命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
  • .当执行” ” git checkout HEAD . ‘ ”或者” ‘ git checkout HEAD < file > ”命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

6 git客户端安装使用

6.1 Git安装配置

6.2 git配置

6.2.1 Git用户信息

6.2.2 文本编辑器

6.2.3 差异分析工具

6.2.4 查看配置信息

6.3 Git使用

6.3.1 ssh链接

6.3.2 http链接

图片[1]-分布式版本控制系统-牛翰网

图片[2]-分布式版本控制系统-牛翰网
图片[3]-分布式版本控制系统-牛翰网

图片[4]-分布式版本控制系统-牛翰网

4、 冲突解决
图片[5]-分布式版本控制系统-牛翰网

7 Gitlab Server 部署

1、环境配置
关闭防火墙、SELinux
开启邮件服务

图片[6]-分布式版本控制系统-牛翰网

图片[7]-分布式版本控制系统-牛翰网

图片[8]-分布式版本控制系统-牛翰网
图片[9]-分布式版本控制系统-牛翰网

图片[10]-分布式版本控制系统-牛翰网
图片[11]-分布式版本控制系统-牛翰网
图片[12]-分布式版本控制系统-牛翰网
图片[13]-分布式版本控制系统-牛翰网
用户生成公钥

图片[14]-分布式版本控制系统-牛翰网

图片[15]-分布式版本控制系统-牛翰网
图片[16]-分布式版本控制系统-牛翰网
图片[17]-分布式版本控制系统-牛翰网
图片[18]-分布式版本控制系统-牛翰网

图片[19]-分布式版本控制系统-牛翰网
图片[20]-分布式版本控制系统-牛翰网

摘自

来源链接:https://www.cnblogs.com/chenshibao/p/18738299

© 版权声明
THE END
支持一下吧
点赞14 分享
评论 抢沙发
头像
请文明发言!
提交
头像

昵称

取消
昵称表情代码快捷回复

    暂无评论内容