GitLab实战操作指南
一、Git原理
1、Git是什么?
Git是目前世界上最先进的分布式版本控制系统(没有之一)。
2、Git有什么特点?
简单来说就是:高端大气上档次!
3、GIt与SVN区别
SVN管理:
属于集中式版本控制系统,版本库是集中存放在中央服务器,必须联网才能工作,脱离局域网,采取互联网提交大文件会比较慢
Git管理:
属于分布式版本控制系统,根本没有“中央服务器”,安全性高,每个人的电脑上都是一个完整的版本库,即电脑硬盘上会有个版本这样,你工作的时候,就不需要联网了。即使中央服务器出了问题,从其他人那复制一个就好了
4、Git 工作流程
一般工作流程如下:
- 克隆 Git 资源作为工作目录。
- 在克隆的资源上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
下图展示了 Git 的工作流程:
二、Git 配置
1、配置个人的用户名称和电子邮件地址
$ git config --global user.name "username"
$ git config --global user.email yourmail
2、在客户端生成ssh key
- 安装客户端后在桌面任意空白处右击
- 打开Git Base Here然后输入下面命令
- 打开本地git bash,使用如下命令生成ssh公钥和私钥对
- ssh-keygen -t rsa -C 'xxx@xxx.com' 然后一路回车(-C 参数是你的邮箱地址)
- 然后打开~/.ssh/id_rsa.pub文件(~表示用户目录,比如我的windows就是C:\Users\Administrator),复制其中的内容
- 打开gitlab,找到Settings -->Profile -->SSH Keys--->Add SSH Key,并把上一步中复制的内容粘贴到Key所对应的文本框,在Title对应的文本框中给这个sshkey设置一个名字,点击Add key按钮
三、Git常用操作
1、创建一个版本库
Ps:只是一个空目录哦
$ mkdir mytest
2、通过git init命令把这个目录变成Git可以管理的仓库
$ git init
Initialized empty Git repository in C:/Users/userAccount/Desktop/test/.git/
ps:目录下会自动生成.git,误删,毕竟全靠它做版本管理
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
第二步,用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "test add file"
[master (root-commit) 5a92835] test add file
1 file changed, 1 insertion(+)
create mode 100644 mytest/readme.txt
3、版本的操作内容操作查看
本地版本操作:(连续操作一个文件并提交好多次)
git log日志查看命令
$ git log
commit d9669171c9c5890fd282c40a7e7fe0c372074233 (HEAD -> master)
Date: Thu Apr 4 14:52:23 2019 +0800
test third version
commit 6b39a4a6ce09c472e7f9c09e50c79c78b2efee16
Date: Thu Apr 4 14:51:11 2019 +0800
test second version
commit 9e42e41abf01d85e163b3d63c41bf5b099920d47
Date: Thu Apr 4 14:47:32 2019 +0800
test first version
commit dca156cf9c72b17f5d1aaff88ebfbfc79d5b91e2
Date: Thu Apr 4 14:46:39 2019 +0800
test add file
:
比较直观的方式查看
$ git log --pretty=oneline
4、版本回退操作
比如返回上一个版本
$ git reset --hard HEAD^
HEAD is now at 6b39a4a test second version
Git的版本是生成是十六进制生成的,我的上一版本是如截图:
再查看日志当前版本是否为6b39a4a
回滚到某个指定版本
$ git reset --hard dca156cf
HEAD is now at dca156c test add file
再查看日志当前版本是否为dca156cf
优势:回滚很快呀
5、git status 查看状态
比如我对readme.txt内容做了修改,再输入git status查看状态
git checkout -- file可以丢弃工作区的修改,即撤销修改
$ git checkout -- readme.txt
再次输入git status 发现文件回滚到改动之前了
6、删除文件操作
先增加一个文件
$ git add delete.txt
再删除文件
$ rm delete.txt
查看文件状态
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: delete.txt
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: delete.txt
提交修改
$ git commit -m "remove test.txt"
[master cc6aa8f] remove test.txt
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 mytest/delete.txt
7、将本地仓库和远程仓库相关联
$ git remote add origin git@172.16.5.128:RefainZero/demo.git
把本地库的所有内容推送到远程库
$ git push -u origin master
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
Everything up-to-date
8、从远程仓库获取代码
$ git clone git@172.16.5.128:RefainZero/demo.git
Cloning into 'demo'...
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 16 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (16/16), done.
9、解决冲突
1)、先制造一个冲突
情景,readme.txt中的,文本默认是test
git status
修改本地的readme.txt中文本内容为“20191635”
在服务器也修改了readme.txt,修改文本内容为“就想冲突下”
2)、提交本地的代码到远程仓库
在服务器执行git pull(获取最新代码)
不负众望,果然发生代码冲突
3)、解决文件中冲突的的部分
打开冲突的文件
4)、把冲突标记删掉,把冲突解决正确
提交修改,并同步到远程仓库
$ git add readme.txt
$ git commit -m '解决冲突的测试'
[master 0feb18f] 解决冲突的测试
$ git push origin master
Counting objects: 8, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (8/8), 740 bytes | 740.00 KiB/s, done.
Total 8 (delta 0), reused 0 (delta 0)
To 172.16.5.128:RefainZero/demo.git
ca9bc5e..0feb18f master -> master
再次从服务器上获取最新代码,验证是否冲突
$ git pull
Already up to date.
四、附:Gitlab显示的提交内容
GitLab实战操作指南的更多相关文章
- Burp Suite渗透实战操作指南-上篇
Burp必备知识 在介绍功能之前有必要让大家了解一些burp的常用功能,以便在使用中更好的发挥麒麟臂的优势. 1.1 快捷键 很多人可能都没用过burp的快捷键吧,位置如下,不说话,如果不顺手可以自 ...
- GitLab → 搭建私有的版本控制的托管服务平台
开心一刻 睡着正香,媳妇用力把我晃醒说:“快起来,我爸来了.” 我一下醒了,手脚熟练的把衣服一抱,滚到床底,顺便把鞋也收了进去 媳妇蹲下无奈的说:“快出来!咱俩都结婚半年了.” 我:“对哦,搞习惯了” ...
- jenkins+gitlab自动化编译部署方案探索及服务端编译webpack实战
一. 背景 之前我们的开发流程为在本地进行webpack打包编译,然后svn提交源代码和编译后的代码.同时每次提交前也会从svn更新源代码和编译后的代码.这样做有几个缺点: 1. svn 更新和提交编 ...
- LDAP落地实战(三):GitLab集成OpenLDAP认证
上一篇文章介绍了svn集成OpenLDAP认证,版本控制除了svn外,git目前也被越来越多的开发者所喜爱,本文将介绍GitLab如何集成openldap实现账号认证 GitLab集成OpenLDAP ...
- Docker + Jenkins + Gitlab + Pytest + Allure 接口自动化测试之持续集成实战终极教程
实战教程篇 前言 这边就不教大家怎么用 pytest 写项目了哦,下面有系列文章能帮助你快速入门 Pytest + Allure 这一篇教程主要是教如何从 0 到 1 搭建自动化测试的持续集成环境 后 ...
- Docker 实战(4)- 结合 Jenkins + Gitlab 完成自动化测试的持续集成实战
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html Jenkins 关联 Gitla ...
- Gitlab Runner的分布式缓存实战
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- gitlab 操作指南
重置密码 https://docs.gitlab.com/ce/security/reset_root_password.html gitlab 一键安装 https://docs.gitlab.co ...
- gitlab操作指南
概述 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码 ...
随机推荐
- JS操作iframe元素
1. demo1.html页面中有个iframe元素,iframe元素的src是iframe1.html,怎么在demo1.html页面中操作iframe1.html页面 答曰:demo1.html ...
- Python网络爬虫精要
目的 学习如何从互联网上获取数据.数据科学必须掌握的技能之一. 本文所用到的第三方库如下: requests, parsel, selenium requests负责向网页发送HTTP请求并得到响应, ...
- SpringBoot+Swagger整合API
SpringBoot+Swagger整合API Swagger:整合规范的api,有界面的操作,测试 1.在pom.xml加入swagger依赖 <!--整合Swagger2配置类--> ...
- VS你正在调试 XXXX 的发布版本
按理来说,生成模式选择Debug就能解决这个问题,但是有些时候,即使生成切换到Debug,也依然还是提示正在调试 发布的版本 ,无奈一个文件一个文件的对比,最后发现是Properties文件夹下面的A ...
- html中title小图标的实现
<link rel="icon" href="picture.ico" type="image/x-icon"/> 注意:图片的 ...
- CentOS 7 安装Git
服务器端 1.先从yum安装git yum –y install git 2.在需要的位置创建一个裸仓库(最后以.git结尾) cd /usr/local mkdir git cd git git i ...
- [WC2006]水管局长(LCT)
题目大意: 给定一张图,支持删边,求两点的路径中所有权值的最大值的最小值,貌似很绕的样子 由于有删边,不难想到\(LCT\),又因为\(LCT\)不支持维护图,而且只有删边操作,于是我们考虑时间回溯. ...
- (N叉树 递归) leetcode 590. N-ary Tree Postorder Traversal
Given an n-ary tree, return the postorder traversal of its nodes' values. For example, given a 3-ary ...
- js重点--原型链继承详解
上篇说过了关于原型链继承的问题,这篇详解一下. 1. function animals(){ this.type = "animals"; } animals.prototype. ...
- jQuery使用(十五):when()方法的使用
这个方法再次基于callbacks和deferred对象来实现的一个延迟异步回调来实现的,再when方法内可以添加多个deferred对象作为参数,只有当所有deferred全部被触发了成功的回调函数 ...