分布式版本控制系统

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的工作流程示意图:

image

5. git基本概念

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

image

  • 。图中左侧为工作区,右侧为版本库.在版本库中标记为” 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安装配置

image

6.2 git配置

image

6.2.1 Git用户信息

image

6.2.2 文本编辑器

image

6.2.3 差异分析工具

image

6.2.4 查看配置信息

image

6.3 Git使用

6.3.1 ssh链接

image

6.3.2 http链接

image

image
image

image
image
image

image
image

image

image

4、 冲突解决
image
image

7 Gitlab Server 部署

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

image

image

image

image
image

image
image

image

image

image
image
image

image
image
image
image
用户生成公钥
image

image
image

image

image

image
image
image
image
image

image
image
image

摘自

posted @   似梦亦非梦  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示