Gitlab+Jenkins学习之路(一)之Git基础

Stella981
• 阅读 908
  • 1、GIT基础

GIT是一个分布式版本管理系统,速度快,适合大规模,跨地区多人协同开。SVN是一个集中式版本管理系统。

(1)GIT生态

GIT分布式版本管理系统

Gitlab git私库解决方案

Github git公有库解决方案

(2)Git安装

Centos:

yum install -y git

Ubuntu:

apt-get install git

Windows安装git bash

Linux编译安装

注意不要使用git 1.8以下版本,推荐使用2.7版本

①编译安装git[root@linux-node1 ~]# yum install -y epel-release
安装依赖包:
[root@linux-node1 ~]# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
[root@linux-node1 ~]# wget https://github.com/git/git/archive/v2.7.4.zip
[root@linux-node1 ~]# yum install -y unzip
[root@linux-node1 ~]# unzip git-v2.7.4.zip
[root@linux-node1 ~]# cd git-2.7.4
[root@linux-node1 git-2.7.4]# make prefix=/usr/local/git all
[root@linux-node1 git-2.7.4]# make prefix=/usr/local/git install
[root@linux-node1 git-2.7.4]# rm -rf /usr/bin/git
[root@linux-node1 git-2.7.4]# ln -s /usr/local/git/bin/git /usr/bin/git
[root@linux-node1 git-2.7.4]# git --version
git version 2.7.4

②初始化仓库
[root@linux-node1 ~]# mkdir test
[root@linux-node1 ~]# cd test
[root@linux-node1 test]# git init    #将test目录初始化仓库
[root@linux-node1 test]# git config --global user.name"*****"
[root@linux-node1 test]# git config --global user.email *******@qq.com

四个区域:
远程仓库<-->本地仓库<-->暂存区域<-->工作目录

四种状态
Untracked、Unmodified、Modified、Staged
Untracked(工作目录)-->git add -->Staged(暂存区)-->git commit版本-->Unmodified(本地仓库)-->Edit file-->Modified-->Stage the file-->Staged

③常用命令:
git add 加入暂存
git status 查看状态
git status -s 状态概览
git diff 尚未暂存的文件
git diff --staged 暂存区文件
git commit 提交更新
git reset 回滚
git rm 从版本库中移除
git rm --cached README 从暂存区中移除
git mv 相当于mv git rm git add 三个命令

使用演示:
[root@linux-node1 test]# touch index.html    ==>创建文件
[root@linux-node1 test]# vim index.html 
[root@linux-node1 test]# git status    ==>此时文件处于工作目录中
位于分支 master

初始提交

未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)

    index.html

提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@linux-node1 test]# git add index.html ==>加入代码库
[root@linux-node1 test]# git status        ==>此时文件处于暂存区
位于分支 master

初始提交

要提交的变更:
  (使用 "git rm --cached <文件>..." 以取消暂存)

    新文件:   index.html

[root@linux-node1 test]# git commit -m "first commit"    ==>提交到本地仓库
[master(根提交) c6bc04f] first commit
 1 file changed, 3 insertions(+)
 create mode 100644 index.html
[root@linux-node1 test]# git status
位于分支 master
无文件要提交,干净的工作区
[root@linux-node1 test]# git log
commit c6bc04f90d4ef442e2c4d5bc788b21de239332da    ==>回滚需要的id
Author: ****** <******@qq.com>
Date:   Fri Dec 8 22:37:40 2017 +0800

    first commit

[root@linux-node1 test]# touch pay.html
[root@linux-node1 test]# vim pay.html 
[root@linux-node1 test]# git add pay.html 
[root@linux-node1 test]# git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   pay.html

[root@linux-node1 test]# touch news.html
[root@linux-node1 test]# echo "123" > news.html 
[root@linux-node1 test]# git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   pay.html

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    news.html

[root@linux-node1 test]# git add news.html 
[root@linux-node1 test]# git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   news.html
    new file:   pay.html

[root@linux-node1 test]# git rm --cached pay.html    #将pay.html从暂存区移除
rm 'pay.html'
[root@linux-node1 test]# git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   news.html

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    pay.html

[root@linux-node1 test]# git commit -m "news"
[master d83603a] news
 1 file changed, 1 insertion(+)
 create mode 100644 news.html
[root@linux-node1 test]# git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    pay.html

nothing added to commit but untracked files present (use "git add" to track)
[root@linux-node1 test]# git log
commit d83603a56b8926630d31b46898e4b6d69293d946
Author:********
Date:   Fri Dec 8 22:48:37 2017 +0800

    news

commit c6bc04f90d4ef442e2c4d5bc788b21de239332da
Author: *****************
Date:   Fri Dec 8 22:37:40 2017 +0800

    first commit
[root@linux-node1 test]# echo "66666" >> pay.html 
[root@linux-node1 test]# git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    pay.html

nothing added to commit but untracked files present (use "git add" to track)
[root@linux-node1 test]# git add pay.html 
[root@linux-node1 test]# git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   pay.html

[root@linux-node1 test]# git commit -m "pay modelue"
[master e55a302] pay modelue
 1 file changed, 2 insertions(+)
 create mode 100644 pay.html
[root@linux-node1 test]# git status
On branch master
nothing to commit, working directory clean
[root@linux-node1 test]# git log
commit e55a302e11d967fd25eac1cce8b6c7bed732019b
Author:******************
Date:   Fri Dec 8 22:49:57 2017 +0800

    pay modelue

commit d83603a56b8926630d31b46898e4b6d69293d946
Author: ******************
Date:   Fri Dec 8 22:48:37 2017 +0800

    news

commit c6bc04f90d4ef442e2c4d5bc788b21de239332da
Author: ******************
Date:   Fri Dec 8 22:37:40 2017 +0800

    first commit
  • 2、分支管理

    [root@linux-node1 test]# git status On branch master nothing to commit, working directory clean

    建分支,开发新功能是不能在master分支上开发 [root@linux-node1 test]# git branch about #创建分支 [root@linux-node1 test]# git status On branch master nothing to commit, working directory clean [root@linux-node1 test]# git checkout about #切换分支 Switched to branch 'about' [root@linux-node1 test]# git status On branch about nothing to commit, working directory clean [root@linux-node1 test]# git log #创建的分支是在master分支当前的状态进行创建的。所以在about分支上也会有master的记录 commit e55a302e11d967fd25eac1cce8b6c7bed732019b Author: ************ Date: Fri Dec 8 22:49:57 2017 +0800

    pay modelue
    

    commit d83603a56b8926630d31b46898e4b6d69293d946 Author: ************ Date: Fri Dec 8 22:48:37 2017 +0800

    news
    

    commit c6bc04f90d4ef442e2c4d5bc788b21de239332da Author: ************ Date: Fri Dec 8 22:37:40 2017 +0800

    first commit
    

    [root@linux-node1 test]# git branch

    • about master [root@linux-node1 test]# touch about.html [root@linux-node1 test]# echo "about us" >> about.html [root@linux-node1 test]# git add . [root@linux-node1 test]# git commit -m "about" [about 08b200a] about 1 file changed, 1 insertion(+) create mode 100644 about.html [root@linux-node1 test]# git log [root@linux-node1 test]# git checkout master #切换到master分支 Switched to branch 'master' [root@linux-node1 test]# git log [root@linux-node1 test]# git checkout about #切换到about分支 [root@linux-node1 test]# echo "about2" > about2.html [root@linux-node1 test]# git add . [root@linux-node1 test]# git commit -m "about2" [root@linux-node1 test]# git log [root@linux-node1 test]# git checkout master [root@linux-node1 test]# git log [root@linux-node1 test]# git merged about #在master分支上合并about分支 [root@linux-node1 test]# git log [root@linux-node1 test]# git branch test #创建test分支 [root@linux-node1 test]# git checkout test [root@linux-node1 test]# touch "test" > test.html [root@linux-node1 test]# git add . [root@linux-node1 test]# git commit -m "test" [root@linux-node1 test]# git checkout master [root@linux-node1 test]# git branch --merged #查看已经合并的分支 [root@linux-node1 test]# git branch --no-merged #查看未合并的分支

    分支命令 git branch例出分支 git branch -v git branch --merged查看哪些分支被合并 git branch --no-merged查看哪些分支未被合并 git branch -d testling删除分支 git checkout切换分支 git merged融合分支

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这