• 01 DevOps 之 Git 命令使用


    1. 前言

    由于项目没有外网,需要在内网打镜像。但自己对git 还不是太熟悉。看着pipline 一脸懵逼。所有针对git 命令在工作中常用的参数及用法简单学习记录下。因为git 是DevOps中的编码的一部分,下面先介绍下DevOps整体的框架。

    1.1 DevOps介绍

    DevOps的前生今世
    DevOps是一种方法或理念,它涵盖开发、测试、运维的整个过程。DevOps是提高软件开发、测试、运维、运营等各部门的沟通与协作质量的方法和过程,DevOps强调软件开发人员与软件测试、软件运维、质量保障(QA)部门之间有效的沟通与协作,强调通过自动化的方法去管理软件变更、软件集成,使软件从构建到测试、发布更加快捷、可靠,最终按时交付软件。
    在这里插入图片描述

    1.2 DevOps 工具链

    DevOps兴起于2009年,近年来由于云计算、互联网的发展,促进了DevOps的基础设施及工具链的发展,涌现了 一大批优秀的工具,这些工具包括开发、测试、运维的各个领域,例如:GitHub、Git/SVN、Docker、Jenkins、 Hudson、Ant/Maven/Gradle、Selenium、QUnit、JMeter等。下图是DevOps相关的工具集:
    在这里插入图片描述

    1.3 企业级DevOps 知识体系

    在这里插入图片描述

    2. git 常用参数

    git 技能树链接

    2.1 git全局设置

    git config --global user.name "xxxxx"
    git config --global user.email "xxxxxx@xxx.com"
    #解决每次拉取都需要输入密码
    #方法一:这会在gitconfig目录下创建一个文件,用于记录账号和密码
    git config --global credential.helper store
    #方法二:拉取时指定账户和密码
    git clone http://账户:密码@仓库地址 <拉取后指定目录> <--branch=分支名>
    git clone  http://liuyan:liuyan123@192.168.221.143:9000/liuyan/xm-admin.git xm-admin --branch=liuyan
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.2 创建git仓库

    mkdir no-temp
    cd no-temp
    git init
    touch README.md
    git add README.md
    git commit -m "first commit"
    git remote add origin https://gitee.com/xxxx/xxxx.git
    git push -u origin master
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.3 git 原理图

    首先看下git 的原理图
    在这里插入图片描述

    git init #初始化项目文件目录,会在项目目录中增加一个.git用于上传你的项目
    git remote add origin +仓库地址 #上传操作
    git add . #将文件添加至暂存区,类似于点击文件,选择复制,这样粘贴板里有复制的文件,add操作大致如此
    git commit -m "对本次操作需要添加的注释"#对本次操作需要添加的注释
    git push #将你的文件传送至github仓库
    git pull #为避免出错,每次开发完成以及开发结束后都应该git pull一下
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.4 git 命令速查表

    在这里插入图片描述

    3. 工作中常用的git命令

    3.1 创建文件夹并初始化本地仓库

    mkdir test
    cd test
    git init
    
    • 1
    • 2
    • 3

    3.2 关联本地仓库和远程仓库

    git remote add origin http://192.168.221.143:9000/liuyan/xm-admin.git
    #说明:
    #origin表示远程库的名字,可以随意,一般默认为origin;
    #origin后面表示远程仓库的真实地址,如下图所示。我这里使用的是SSH地址,当然也可以使用HTTPS地址,复制过来就行。
    
    • 1
    • 2
    • 3
    • 4

    3.3 拉取代码分支(标签)

    git clone http://192.168.221.143:9000/liuyan/xm-admin.git xm-admin --branch=liuyan 
    #liuyan是自己在代码仓库新建的分支,也可换成master等其他分支或标签
    #有的同学可能会用git pull,git pull = git fetch + git merge,因为pull拉取会合并本地文件,可能会导致冲突。
    #这一步操作可能会要求输入密码
    
    • 1
    • 2
    • 3
    • 4

    3.4 创建本地分支,并切换到本地分支

    cd xm-admin
    git branch dev 
    git checkout dev
    git branch -a
    #* dev
    #  liuyan
    #  remotes/origin/HEAD -> origin/master
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.5 更新分支代码[此处从分支liuyan更新]

    git pull origin liuyan
    #1115.txt是在gitlab 新建的文件
    remote: Counting objects: 2, done.
    remote: Compressing objects: 100% (2/2), done.
    remote: Total 2 (delta 1), reused 0 (delta 0)
    Unpacking objects: 100% (2/2), done.
    From http://192.168.221.143:9000/liuyan/xm-admin
     * branch            liuyan     -> FETCH_HEAD
    Updating a101c2c..b30e758
    Fast-forward
     1115 => 1115.txt | 0
     1 file changed, 0 insertions(+), 0 deletions(-)
     rename 1115 => 1115.txt (100%)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3.6 修改本地分支,并查看状态

    echo "bbb" > bbb.txt
    git status
    # On branch dev
    # Untracked files:
    #   (use "git add ..." to include in what will be committed)
    #
    #       bbb.txt
    nothing added to commit but untracked files present (use "git add" to track)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.7 提交暂缓区,并上传至远程分支

    git add bbb.txt #提交到暂缓区
    git commit -m "add bbb.txt " #注释信息
    [dev 7ffcc5e] add bbb.txt
     1 file changed, 1 insertion(+)
     create mode 100644 bbb.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.8(修改代码后)推送本地分支到远程分支

    git branch -u origin/liuyan #git 把本地分支设成远程分支的跟踪分支:
    git branch -vv              #git查看追踪分支:
    git push origin dev:liuyan  #git push到远端不同名分支:
    #Everything up-to-date报错链接:http://t.csdn.cn/lEf6T
    
    • 1
    • 2
    • 3
    • 4

    3.9 合并其他分支到master并推送到远程仓库

    #1、假如我们现在在dev分支上,刚开发完项目,执行以下命令提交代码到dev分支
    git status
    git add .
    git commit -m 'dev'
    git pull
    git push -u origin dev
    #2、然后我们要把dev分支的代码合并到master分支上 ,所以首先切换到master分支上
    git checkout master
    #3、如果是多人开发的话 需要把远程master上的代码pull下来,保险起见,最好pull一下
    git pull origin master
    #4、然后我们把dev分支的代码合并到master上
    git merge dev
    #5、然后查看状态
    [root@gitlab xm-admin]# git status
    # On branch master
    # Your branch is ahead of 'origin/master' by 1 commit.
    #   (use "git push" to publish your local commits)
    #
    nothing to commit, working directory clean
    #6 上面的意思就是你有1个commit,需要push到远程master上
    git push origin master
    Total 0 (delta 0), reused 0 (delta 0)
    To http://192.168.221.143:9000/liuyan/xm-admin.git
       c647f96..8cdba14  master -> master
    #7、合并完成,最后开发的时候 切换分支到 dev 就可以了 git checkout dev
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    3.10 删除代码仓库代码

    3.10.1删除master分支代码

    #1.拉取代码
    git pull origin master
    #2.删除代码
    git rm 2200.txt 1115_01.txt test1115.txt bbb.txt
    #3.重新提交
    git add .
    git commit -m "delete 2200.txt 1115_01.txt test1115.txt bbb.txt"
    git push origin master
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.10.1删除其他分支代码

    #1.拉取分支代码
    git clone http://192.168.221.143:9000/liuyan/xm-admin.git  --branch=liuyan
    #2.删除代码
    cd xm-admin
    git rm 1115_01.txt 2200.txt bbb.txt liuyan.md
    #重新提交代码到分支liuyan'
    git add .
    git commit -m "delete 1115_01.txt 2200.txt bbb.txt liuyan.md"
    git push origin liuyan
    #以下是删除输出结果
    Counting objects: 3, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (2/2), 241 bytes | 0 bytes/s, done.
    Total 2 (delta 1), reused 0 (delta 0)
    remote:
    remote: To create a merge request for liuyan, visit:
    remote:   http://192.168.221.143:9000/liuyan/xm-admin/merge_requests/new?merge_request%5Bsource_branch%5D=liuyan
    remote:
    To http://192.168.221.143:9000/liuyan/xm-admin.git
       8cdba14..c09dd50  liuyan -> liuyan
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    4. 其他常用参数

    4.1 克隆最近一次版本

    git clone --depth=1
    
    • 1

    #当项目过大时,git clone时会出现error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out的问题,如下图
    在这里插入图片描述
    #原因分析:
    #如果我们执行git clone 这个仓库时,会把所有的历史协作记录都clone下来,这样整个文件会非常大,其实对于我们直接使用仓库,而不是参与仓库工作的人来说,只要把最近的一次commit给clone下来就好了。这就好比一个产品有很多个版本,我们只要clone最近的一个版本来使用就行了 。实现这个功能就需要用到git clone --depth=1命令
    #原因分析:
    #如果我们执行git clone 这个仓库时,会把所有的历史协作记录都clone下来,这样整个文件会非常大,其实对于我们直接使用仓库,而不是参与仓库工作的人来说,只要把最近的一次commit给clone下来就好了。这就好比一个产品有很多个版本,我们只要clone最近的一个版本来使用就行了 。实现这个功能就需要用到git clone --depth=1命令

  • 相关阅读:
    【C++】vector的使用与题目练习
    c# 页面跳转
    Python中lambda函数&eval()函数&递归的详细用法
    nginx学习记录-URL Rewrite
    Qt6_贪吃蛇Greedy Snake
    dic= json.loads()双引号变单引号以及dic=json.dumps()出现acsll问题
    修改 ModelScope 默认缓存路径
    【MySQL】8.0新特性、窗口函数和公用表表达式
    【树状数组该回炉重造了】Codeforces Round #813 (Div. 2) E2. LCM Sum (hard version)
    12-2- DCGAN -简单网络-卷积网络
  • 原文地址:https://blog.csdn.net/admin321123/article/details/127873386