一、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实战操作指南的更多相关文章

  1. Burp Suite渗透实战操作指南-上篇

    Burp必备知识 在介绍功能之前有必要让大家了解一些burp的常用功能,以便在使用中更好的发挥麒麟臂的优势. 1.1  快捷键 很多人可能都没用过burp的快捷键吧,位置如下,不说话,如果不顺手可以自 ...

  2. GitLab → 搭建私有的版本控制的托管服务平台

    开心一刻 睡着正香,媳妇用力把我晃醒说:“快起来,我爸来了.” 我一下醒了,手脚熟练的把衣服一抱,滚到床底,顺便把鞋也收了进去 媳妇蹲下无奈的说:“快出来!咱俩都结婚半年了.” 我:“对哦,搞习惯了” ...

  3. jenkins+gitlab自动化编译部署方案探索及服务端编译webpack实战

    一. 背景 之前我们的开发流程为在本地进行webpack打包编译,然后svn提交源代码和编译后的代码.同时每次提交前也会从svn更新源代码和编译后的代码.这样做有几个缺点: 1. svn 更新和提交编 ...

  4. LDAP落地实战(三):GitLab集成OpenLDAP认证

    上一篇文章介绍了svn集成OpenLDAP认证,版本控制除了svn外,git目前也被越来越多的开发者所喜爱,本文将介绍GitLab如何集成openldap实现账号认证 GitLab集成OpenLDAP ...

  5. Docker + Jenkins + Gitlab + Pytest + Allure 接口自动化测试之持续集成实战终极教程

    实战教程篇 前言 这边就不教大家怎么用 pytest 写项目了哦,下面有系列文章能帮助你快速入门 Pytest + Allure 这一篇教程主要是教如何从 0 到 1 搭建自动化测试的持续集成环境 后 ...

  6. Docker 实战(4)- 结合 Jenkins + Gitlab 完成自动化测试的持续集成实战

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html Jenkins 关联 Gitla ...

  7. Gitlab Runner的分布式缓存实战

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. gitlab 操作指南

    重置密码 https://docs.gitlab.com/ce/security/reset_root_password.html gitlab 一键安装 https://docs.gitlab.co ...

  9. gitlab操作指南

    概述 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码 ...

随机推荐

  1. Oracle timestamp类型转换成date类型

    今天需要根据时间判断,统一修改某一个字段的数据.然后打开数据库发现,时间类型为timestamp类型.如下: 然后呢,这对我不是喝口水就可以解决的问题吗? 解决方案如下:我需要改这张表某个字段的内容, ...

  2. flutter 监听返回键

    ### 监听手机返回键(双击退出) ``` import 'package:fluttertoast/fluttertoast.dart'; //提示插件 class WillPopScopeTest ...

  3. linux的dd命令

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...

  4. 【MySQL 读书笔记】普通索引和唯一索引应该怎么选择

    通常我们在做这个选择的时候,考虑得最多的应该是如果我们需要让 Database MySQL 来帮助我们从数据库层面过滤掉对应字段的重复数据我们会选择唯一索引,如果没有前者的需求,一般都会使用普通索引. ...

  5. [2019.04.16] 由Python写成的自动解压脚本

    很久很久以前(二十七天吧……大概)被要求写一个脚本来检索并解压磁盘上所有的以特定格式命名的tar文件,于是乎学习和摸鱼就一起开始了. 这次要写的脚本,针对的是这样的文件结构: 文件结构如上图所示 可以 ...

  6. Codeforce Round #555 Div.3 D - N Problems During K Days

    构造题 话说挺水的题..当时怎么就WA到自闭呢.. 先把每个位置按照最低要求填满,也就是相差1..然后从最后一位开始把剩下的数加上,直到不能加为止. #include <bits/stdc++. ...

  7. 常规 nginx 代理apache

    nginx: server { server_name www.xx.com xx.com; access_log /data/wwwlogs/www.xx.com_nginx.log combine ...

  8. Linux系统扩容根目录磁盘空间的操作方法

    问题描述 系统的服务无法正常运行,查看磁盘空间,发现根目录已经满了 解决过程 1.添加磁盘空间 2.使用fdisk -l命令查看磁盘信息 3.新建磁盘分区 4.使用fdisk /dev/sda3, 创 ...

  9. .Net Core实践3 配置文件

    环境 .netcore2.1 / vs2017 / win10 / centos7 在.netcore项目中读取配置文件,先添加应用程序配置文件App.config.这个是类库项目的配置文件名. Sy ...

  10. C#面向对象基本概念总结

    快过年了,发一篇自己的复习总结.以下内容均是个人理解,如文章有幸被浏览,如有错误的地方欢迎大家提出,相互学习相互进步! 面向对象三大基本特征:封装,继承,多态 一.类 (对象声明的三种方式:以普通基类 ...