git
发布日期:2021-08-26 18:18:46 浏览次数:59 分类:技术文章

本文共 6593 字,大约阅读时间需要 21 分钟。

git 本地仓库操作

git --help
调出git的帮助文档
git +命令 --help
查看某个具体命令的帮助文档
git --version
查看git的版本
git init
生成空的本地仓库
git add file1 file2 ....
将文件添加到暂存区

初次commit之前,需要配置用户邮箱及用户名,使用以下命令

git config --global usr.email "you@example.com"
git config --global user.name "your Name"
git commit
将暂存区里的文件提交到本地仓库

git remote

用于管理远程仓库
git push -u origin master
往名字为origin仓库的master分支上提交
git fetch
拉取远程仓库的变更到本地仓库
git merge origin/master
将远程的变更,合并到本地仓库的master分支
git pull
-- 不建议使用 等同于fetch之后merge

git status

用于查看git的状态
git rm
用于git文件的删除操作
如果只是git rm --cache 仅删除暂存区里的文件
如果不加--cache会删除工作区里的文件,并提交暂存区
git checkout
直接加文件名,从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖
加了分支名+文件名,则表示从分支名为所写的分支名中拉取文件,并覆盖工作区里的文件

新键文件-->untracked

使用add命令将新键的文件加入到暂存区-->Staged
使用commit命令将暂存区的文件提交到本地仓库-->Unmodified
如果对Unmodified状态的文件进行修改-->modified
如果对Unmodfied状态的文件对行remove操作-->untracked

1.什么是分支

软件项目中启动一套单独的开发线的方法
2.为什么使用git
1.可以很好的避免版本兼容开发的问题,避免不同版本之间的相互影响
2.封装一个开发阶段
3.解决bug的时候新键分支,用于对该bug的研究
3.git中跟分支相关的命令
git brach 分支名
git branch 不参加任何参数,列出所有的分支,分支前面有*号,代表该分支为当前所在分支
创建分支的时候,分支名不能使用特殊符号
git brancd -d 分支名
不能删除当前所在分支
git branch -m 旧分支名 新分支名
git checkout 分支名 切换分支
如果在分支上面对文件进行修该之后,没有commit就切换到另外一个分支b,这个时候会报错,因为没有commit的文件在切换之后会不覆盖。所以git报错提示

git checkout -f 分支名 强制切换到分支,如果当前有未提交的变更,会直接丢弃

-f 参数一定一定要非常非常小心使用,一般情况下不建议使用,除非真的要强制去执行

log命令的作用:

用于查看git的提交历史
git log命令显示的信息的具体含义
commit 4a70ceb24b6849ad860d6af5126c9227b333d2d1 --SHA-1 校验和 commit id
Author: ----作者跟邮箱概要信息
Date:---提交时间

v2 ---commit的时候,使用-m现象写一段概要说明

日常在使用commit的时候,-m选项所写得内容一定不能随便写
“修改了登陆的bug”-->"新增用户管理中心"
git log -数字:表示查看最近几次的提交
git log -p -2 显示最近两次提交的不同点
git log --author 查看具体某个作者的提交
git log --online 输出简要的信息
git log --graph 以一个简单的线串连起整个提交历史
git log 输出信息的定制

diff-->difference的缩写,用于比较差异

使用场景:
1.解决冲突
2.制作补丁
git diff 不加任何参数 用于比较当前工作区跟暂存区的差异
git diff --cached 或者--staged
git diff HEAD
git diff 分支名 查看当前分支跟指定的分支的差异
git diff 分支名1 分支2 查看两个指定分支(已提交的)的差异,分支2跟分支1的差别
git diff 文件名 查看指定文件的差异
git diff commitid1 commitid2 用于列出两个历史提交的差异
git diff --stat 用于罗列有变更的文件

1.将不必要的文件add

2.上次提交觉得是错的
3.不想改变暂存区内容,只是想调整提交的信息
4.版本回滚
git reset HEAD 文件名 移除不必要的添加到暂存区的文件
git reset HEAD^ 或者 commitd去掉上一次的提交
git reset --soft HEAD^ 修改上次提交的信息即commit -m "修改这里的内容"
git reset --soft 只是将HEAD引用指向指定的提交,工作区跟暂存区的内容不会改变
git reset --mixed(默认选项)将HEAD指向指定的提交,暂存区的内容随之改变,工作区内容不变
git reset --hard 将HEAD指向指定的提交,暂存区跟工作区都会改变

分支的合并

git merge 分支名
表示:拿指定分支名与当前的分支进行合并
git diff --name-only --diff-filter=U 用于查看产生冲突的文件

git tag 不加任何参数,表示显示标签(以字母序),非按时间

git tag 标签名 默认是给最近的一次提交打上标签
git tag 标签名 commitid 给相应的提交打上标签
git show 标签名 显示该标签相关的那次提交的相关信息
git tag -d 标签名 删除该标签
git push 远程分支名 标签名 把某个标签(必须是本地已经存在的,否则推送失败)推送到远程服务器上

删除远程标签的步骤

1.删除本地的标签 git tag -d 标签名
2.再删除远程的 git pish orgin :refs/tags/标签名

标签跟commit挂钩,只要commit存在于多个分支,那么这几个分支就都能看到这个标签

为什么要使用.gitignore文件

大量与项目无关的文件全推到远程仓库上,同步的时候会非常慢,且跟编辑器相关的一些配置推上去之后,别人更新也会受其影响。所以,我们使用该文件,对不必要的文件进行忽略,使其不被git追踪

一般情况下,.gitignore文件,在项目一开始创建的时候就创建,并推送到远程服务器上,这样大家初次同步项目的时候,就是用到该文件,避免以后,团队成员把与项目无关的文件,传到远程服务器上

.log 表示忽略项目中所有以.log结尾的文件

123?.log 表示忽略项目中的所有以123加任意字符的文件
/error.log 表示忽略项目中根目录中的error.log这个文件
src/main/test/
表示忽略/src/main/test/目录下的所有文件
*.class
**/java/匹配所有java目录下的所有文件
!/error.log 表示在之前的匹配规则下,被命中的文件,可以使用!对前面的规则进行否定

对于已经提交到远程或本地仓库的文件,.gitignore配置之后不会生效,我们必须先删除本地暂存区里的文件,之后在加上.gitignore文件,最后在把变更提交到远程仓库上。

git rm --cached 文件名 从暂存区删除某个文件
git rm -rf --cache 文件夹 表示递归删除该文件夹的所有东西

1.gitlab是什么

是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
基础功能免费,高级功能收费
2.为什么要使用gitlab
1.基础功能开原,可自行搭建
2.可以进行权限控制,使得代码对部分人可见
3.gitlab使用方便

1.linux必要配置

在防火墙里开放http跟ssh端口
yum installl lokkit
yum install curl openssh-server openssh-clients postfix cronie
service postfix start
lokkit -s http -s ssh
添加gitlab仓库,并安装
curl -sS http:packages,gitlab.cc/install/gitlab-ce/script.rpm.sh | bash
yum install gitlab-ce
启动gitlab
gitlab-ctl reconfigure

vim /etc/gitlab/gitlab.rb

修改external_url=''
nginx['listen_port']=8888

gitlab-ctl reconfigure

gitllab-ctl restart

配置邮箱服务的用途

有合并请求时,邮件通知
帐号注册时,邮件验证
修改密码时,通过邮件修改
配置步骤
1.开启QQ邮箱的smtp服务
设置-->账户-->smtp-->密保验证-->验证成功返回一串字符串,形状如(ausdixwerjdddf)这是邮件服务器的密码
保存返回的字符串
2.修改gitlab配置
vim /etc/gitlab/gitlab.rb
gitlab_rails改所有的该行
user['git_user_email']='1448099932@qq.com'

gitlab-ctl reconfiure

3.测试邮件服务是否正常
gitlab-rails console
Notify.test_email('邮件接收方地址','邮件标题','邮件内容')deliver_now
按回车,测试发送

1.开启注册邮箱验证

admin area-->setting-->sign-up restrictions-->勾选send confirmation email on sign-up
2.当前用户
root,123,wiggin
3.创建组
首页->create a group
访问级别
Private:只有组成员草才能看到
Internal:只要登录的用户就能看到
Public:所有人都能看到

Guest:可以创建issue,发表评论,不能读写版本库

Reporter:可以克隆代码,不能提交
Developer:可以克隆代码,开发,提交,push
Master:可以创建项目,添加tag,保护分支,添加项目成员,编辑项目
Owner:可以设置项目访问权限 - Visibility Level,删除项目,迁移项目,管理组成员

1.键入命令:ssh-keygen -t rsa

2.提醒你输入key的名称,输入id_rsa
3.在C:\users\administrator.ssh下产生两个文件:id_rsa和id_rsa.pub
4.用记事本打开id_rsa.pub文件,复制内容,在gitlab.com的网站上到ssh密钥管理页面,添加新公钥,随便取个名字,内容粘贴刚才复制的内容。

为什么要保护分支

保护特定的分支不被随便合并,以免影响相应的分支

什么是持续集成?

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
好处
节省人力成本
加快软件开发进度
实时交付
整体流程
成员通过git提交代码-->持续集成引擎拉取代码使用构建工具自动构建-->发布构建好的项目
重要组成部分
git
gitlab
Jenkins 持续集成引擎
maven 构建工具
sonarqube 代码质量管理
junit 自动自行单元测试
JDK jdk
Tomcat 服务器

几个war-->微服务架构

版本说明

jdk8.0(目前大部分公司内部使用的还是JDK8,大部分依赖java的工具或框架,对JDK8的支持度是最好的)
maven3.5.3

安装sonarqube

前置依赖
mysql 5.6 or 5.7
jdk 1.8
1.下载
2.安装unzip并解压sonarqube并移动到/usr/local/
unzip sonarqube-6.7.4.zip
mv sonarqube-6.7.4 /usr/local/
3.mysql里新增数据库
create database sonar default character set uft8;
4.修改sonarqube相应的配置
vim /usr/local/sonarqube-6.7.4/conf/sonar.proerties
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.jdbc.url=改成步骤3创建的库名
sonar.web.context=/sonar
sonar.web.host=0.0.0.0

5.新增用户,并将目录所属赋予该用户

useradd sonar
chown -R -sonar.sonar sonarqube-6.7.4/
6.启动
su - soanr
sonar.sh start
7.界面访问
在界面产生令牌,并将项目代码使用以下命令进行提交由sonarqube进行分析,完成后,查看相应的分析结果

安装jenkins

1.前置条件
JDK,tomcat
2.安装tomcat
3.安装jenkins
将jenkins上传到tomcat的webapps目录
启动tomcat
打开http://192.168.56.101:8080/jenkins
此时发现提示jenkins离线
访问http://192.168.56.101:8080/jenkins/pluginManager/advanced
拉到最底下,将https-->改成http,之后提交
重启tomcat
选择默认安装

如果界面提示Jenkins正在启动,请稍后...或者提示Please wait while Jenkins is getting ready to work...

解决方法
需要你进入jenkins的工作目录,打开 hudson.model.UpdateCenter.xml 把 改成

jenkins插件安装及配置

插件安装:
系统管理-->插件管理
1.按抓Maven Integration plugin
2.安装sonarqube scanner for jenkins
3.Publish Over SSH --发布到远程服务器

系统配置:

系统管理-->全局工具配置
1.配置jdk
2.配置maven
3.配置sonar
4.邮件配置
系统管理-->系统设置-->邮件通知
smtp服务器 smtp.qq.com

pipeline特性

配置代码化(Group)
将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。

pipeline基本概念

stage:阶段,一个Pipeline可以划分为若干个Stage,每个stage代表一组操作。注意,stage是一个逻辑分组的概念,可以跨多个Node
Node:节点,一个Node就是一个jenjins节点,或者是Master,或者是Agent,是执行step的具体运行期环境。
Step:步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供

转载于:https://blog.51cto.com/12406012/2368196

转载地址:https://blog.csdn.net/weixin_33894640/article/details/92713799 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux 进程管理用ps命令查看进程
下一篇:H3C官方模拟器HCL常见问题

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月10日 14时08分44秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章