Git & Gitlab版本控制系统

常见版本管理工具

SVN

集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN.无法进行提交或备份文件。

Git

分布式的版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git。当然为了习惯及团队协作,会将本地数据同步到Git服务器或者GitHub等代码仓库。

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哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

git config --global user.name lewen

git config --global user.email [email protected]

GIT的四个区域

Workspace:工作区

Index/Stage/Cached:暂存区

Repository:本地仓库

Remote:远程仓库

Git命令就是用于将文件改动切换到不同的空间来记录

GIT的四种状态



git rm -f filename      #删除工作区和暂存区的文件
(use --cached to keep the file, or -f to force removal)?
git diff file          #比较本地vs暂存区
git diff --cached file    #暂存区vs本地版本库
git log --oneline        # 一行显示
         --decorate      # 具体操作?
git log -p                 #显示详细信息
git log -1                #显示1条

commit 相当于做快照
注意 git status 操作提示

从暂存区恢复到本地工作区
  git checkout -- file           # 撤销工作区更改

从版本库恢复[覆盖]到暂存区(暂存区错误add交)
git reset HEAD file

从版本库回退到版本[某一次commit版本]
git reset --hard f34j34

回退后,回退点之后的git log 日志看不到
git reflog 查看所有commit的日志

分支概念

Git的分支,从本质上来讲仅仅是指向提交对象的可变指针。在这一点上与SvN是有着本质的区别。SVN的分支实际上就是一个目录。

Git的默认分支名字是master。在多次提交操作之后,你其实已经有一个指向最后那个提交对象的master分支。它会在每次的提交操作中自动向前移动。

git 分支

git branch          #查看分支

git checkout dev    #切换分支

git merge dev       # 合并分支

如果修改了同一个文件,合并时会冲突,需要确定修改内容

在master 修改冲突的文件,add 提交,commit -->合并完成

git brach -d dev 删除分支

标签使用

前面回滚使用的是一串字符串,又长又难记。

git tag v1.0    #一当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。
git tag        #→查看当前所有的标签
git show vl.0    #一查看当前1.0版本的详细信息
git tag v1.2 -m "version 1.2 release is test"  # 创建带有说明的标签,-a 指定commit id 标签名字(不加是当前打标签),-m 指定说明文字
git tag -d vl.0        #我们为同一个提交版本设置了两次标签,删除之前的v1.0

[[email protected] git data]# git reset --hard 0bdf2e7    # --hard 快速回滚   --soft
HEAD is now at Obdf2e7 modified README file

[[email protected] git datal# git reset --hard V1.0
HEAD is now at a66370a add oldboy dir

github

Github顾名思义是一个Git版本库的托管服务,是目前全球最大的软件仓库,拥有上百万的开发者用户,也是软件开发和寻找资源的最佳途径,Github不仅可以托管各种Git版本仓库,还拥有了更美观

的Web界面,您的代码文件可以被任何人克隆,使得开发者为开源项贡献代码变得更加容易,当然也可以付费购买私有库,这样高性价比的私有库真的是帮助到了很多团队和企业。

1、注册用户

2、配置ssh-key

3、创建项目

4、克隆项目到本地

5、推送修改到远程

echo "#git">> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:lewen/git.git
git push -u origin master
git remote add origin [email protected]:lewen/git.git
git push -u origin master
ssh-keygen -t rsa
将公钥添加到    一个公钥在github只能绑定一次
将远程的拉下来,合并后,再 push
git fetch 将远程的更新到本地
git merge origin/master  合并远程的到本地master
先拉,再合并,再推

gitlab

Gitlab Shell。

Gitlab Shell有两个作用:为Gitlab处理Git命令、修改authorizedkeys列表。

当通过SSH访问Gitlab Server时,Gitlab Shell会:限制执行预定义好的Git命令(git push,git pull,gitannex)

调用Gitlab Rails API检查权限执行pre-receive钩子(在GitLab企业版中叫做Git钩子)执行你请求的动作处理GitLab的post-receive动作。处理自定义的post-receive动作

当通过http(s)访问Gitlab Server时,工作流程取决于你是从Git仓库拉取(pul)代码还是向git仓库推送(push)代码。

如果你是从Git 仓库拉取(pull代码,Gitlab Rails应用会全权负责处理用户鉴权和执行Git命令的工作;

如果你是向Git 仓库推送(push)代码,Gitlab Rails 应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由Gitlab Shell进行处理:

调用GitabRails ApI检查权限。执行pre-receive钩子(在Gitlab企业版中叫做Git钩子)。执行你请求的动作处理GitLab的post-receive动作

处理自定义的post-receive动作

/usr/local/src/

gitlab-ctl reconfigure    # 只要修改/etc/gitlab/gitlab.rb 就需要重新配置

gitlab-ctl tail

restart   [option]

status

GITLAB备份管理

#配置文件中加入
gitlab rails[‘backup path‘]=‘/data/backup/gitlab‘
gitlab rails[‘backup keep time‘]=604800              # 以秒计算
?
#如果自定义备份目录需要赋予git权限
mkdir/data/backup/gitlab
chown -R git.git /data/backup/gitlab
/usr/bin/gitlab-rake gitlab:backup:create #执行备份
?
#定时任务Crontab中加入
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create
?

GITLAB数据恢复

#停止数据写入服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1512811475_2017_12_09_10.2.2
gitlab-ctl restart

把先关服务

    rpm -uvp xxxxxx.rpm     升级gitlab

最好不要升级。真要升级采用数据导入的

原文地址:https://www.cnblogs.com/wenyule/p/10014206.html

时间: 2024-10-11 23:34:42

Git & Gitlab版本控制系统的相关文章

第1章Git分布式版本控制系统

今天在高铁闲来无事,决定把我之前遗漏的Git好好整理一番. 首先感谢老男孩架构师班赵班长深入讲解Git,综合自己实践整理而来,特此在今天分享给大家. 笔者QQ:572891887 Linux架构交流群:471443208 1.1Git诞生历史 我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux技术爱好者的贡献,志愿者们通过邮件向Linus发送着自己编写的源代码文件

手把手教你玩转Git分布式版本控制系统!

目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历史 我 想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自 全球Linux技术爱好者的贡献,志愿者们通过邮件向Linus发送着自己编写的源代码文件,然后由Linus本人通过手工的方式

Git分布式版本控制系统最佳实践

今天在高铁闲来无事,决定把我之前遗漏的Git好好整理一番. 首先感谢老男孩架构师班赵班长深入讲解Git,综合自己实践整理而来,特此在今天分享给大家. 笔者QQ:572891887 Linux架构交流群:471443208 1.1Git诞生历史 我想大家还记得Linustorvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux技术爱好者的贡献,志愿者们通过邮件向Linus发送着自己编写的源代码文件,

GIT分布式版本控制系统使用教程

版本控制工具大概有: RCS单机版 CVS.SVN集中式版本控制系统 GIT分布式版本控制系统 这里介绍GIT,它四大位置:本地代码工作区---待提交列表staging area---本地仓库local repo---远程仓库remote repo(git服务器).从左往右是上传代码,从右往左是下载代码. 备注1:git比svn多了待提交列表. 备注2:最好本地一个分支.远程一个分支,没有必要搞多个分支,只有每个人合并的时候就要花很多时间. 备注3:帮git当作高级svn来用. 备注4:更改服务

GIT分布式版本控制系统-1

在Linux上安装Git: 1.输入Git,看看系统有没有安装Git: $ git The program 'git' is currently not installed. You can install it by typing: sudo apt-get install git 如上提示Git没有安装,通过sudo apt-get install git就可以直接完成Git安装 在Windows上安装Git: 在windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安

Git分布式版本控制系统

1.版本控制 是否依稀记得你的毕业论文? 毕业论文_初稿.doc 毕业论文_修改1.doc 毕业论文_修改2.doc 毕业论文_修改3.doc 毕业论文_完整版1.doc 毕业论文_完整版2.doc 毕业论文_完整版3.doc 毕业论文_最终版1.doc 毕业论文_最终版2.doc 毕业论文_死也不改版.doc ... 是否还记得老师让你重新自己写的项目? blog1 blog2 blog3 blog4 ... 以上是使用文件或文件夹进行版本管理,以上方式有缺点: 多个文件,保留所有版本时,需要

git分布式版本控制系统常用的操作

Git是一个版本控制系统,用来追踪计算机文件的变化的工具,也是一个供多人使用的协同工具.它是一个分布式的版本控制系统,本文将简单介绍如何使用.简单来说,就是你要和你的伙伴一起完成一项任务,但是你们要互相交换修改,查看自己的历史版本等.版本控制系统就是帮助我们做这个的. 网上一堆教程,难得讲得清楚的.这里也不废话介绍原理之类的,直接说明如何使用.由于Git是一个分布式文件控制系统,所以一般采用一个服务器方便大家交换修改用的.每个人本地都有一个版本库,保存自己的历史版本,然后每个人可以把自己的修改提

Centos编译安装gitlab版本控制系统

[本文档所介绍的内容适用于公司测试/生产常见的gitlab,svn等版本控制环境部署,即常见的代码管理环境部署] 一:gitlab环境部署前准备: 1.1 基础系统要求: 系统要求:Centos 6 x86_64 (这里 以centos6.6为例) 1.2 相关软件要求: * 系统开发环境工具即"Development Tools" * Ruby环境:(版本不低于2.0,这里为2.3.0) * gitlab服务运行用户:git系统账号 * Gitlab Shell环境:(版本不低于2.

Git分布式版本控制系统学习笔记

Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.[4] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具.开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵