本文共 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之后mergegit status
用于查看git的状态git rm用于git文件的删除操作如果只是git rm --cache 仅删除暂存区里的文件如果不加--cache会删除工作区里的文件,并提交暂存区git checkout直接加文件名,从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖加了分支名+文件名,则表示从分支名为所写的分支名中拉取文件,并覆盖工作区里的文件新键文件-->untracked
使用add命令将新键的文件加入到暂存区-->Staged使用commit命令将暂存区的文件提交到本地仓库-->Unmodified如果对Unmodified状态的文件进行修改-->modified如果对Unmodfied状态的文件对行remove操作-->untracked1.什么是分支
软件项目中启动一套单独的开发线的方法2.为什么使用git1.可以很好的避免版本兼容开发的问题,避免不同版本之间的相互影响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 idAuthor: ----作者跟邮箱概要信息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 或者--stagedgit diff HEADgit 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.为什么要使用gitlab1.基础功能开原,可自行搭建2.可以进行权限控制,使得代码对部分人可见3.gitlab使用方便1.linux必要配置
在防火墙里开放http跟ssh端口yum installl lokkityum install curl openssh-server openssh-clients postfix cronieservice postfix startlokkit -s http -s ssh添加gitlab仓库,并安装curl -sS http:packages,gitlab.cc/install/gitlab-ce/script.rpm.sh | bashyum install gitlab-ce启动gitlabgitlab-ctl reconfigurevim /etc/gitlab/gitlab.rb
修改external_url=''nginx['listen_port']=8888gitlab-ctl reconfigure
gitllab-ctl restart配置邮箱服务的用途
有合并请求时,邮件通知帐号注册时,邮件验证修改密码时,通过邮件修改配置步骤1.开启QQ邮箱的smtp服务设置-->账户-->smtp-->密保验证-->验证成功返回一串字符串,形状如(ausdixwerjdddf)这是邮件服务器的密码保存返回的字符串2.修改gitlab配置vim /etc/gitlab/gitlab.rbgitlab_rails改所有的该行user['git_user_email']='1448099932@qq.com'gitlab-ctl reconfiure
3.测试邮件服务是否正常gitlab-rails consoleNotify.test_email('邮件接收方地址','邮件标题','邮件内容')deliver_now按回车,测试发送1.开启注册邮箱验证
admin area-->setting-->sign-up restrictions-->勾选send confirmation email on sign-up2.当前用户root,123,wiggin3.创建组首页->create a group访问级别Private:只有组成员草才能看到Internal:只要登录的用户就能看到Public:所有人都能看到Guest:可以创建issue,发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交Developer:可以克隆代码,开发,提交,pushMaster:可以创建项目,添加tag,保护分支,添加项目成员,编辑项目Owner:可以设置项目访问权限 - Visibility Level,删除项目,迁移项目,管理组成员1.键入命令:ssh-keygen -t rsa
2.提醒你输入key的名称,输入id_rsa3.在C:\users\administrator.ssh下产生两个文件:id_rsa和id_rsa.pub4.用记事本打开id_rsa.pub文件,复制内容,在gitlab.com的网站上到ssh密钥管理页面,添加新公钥,随便取个名字,内容粘贴刚才复制的内容。为什么要保护分支
保护特定的分支不被随便合并,以免影响相应的分支什么是持续集成?
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。好处节省人力成本加快软件开发进度实时交付整体流程成员通过git提交代码-->持续集成引擎拉取代码使用构建工具自动构建-->发布构建好的项目重要组成部分gitgitlabJenkins 持续集成引擎maven 构建工具sonarqube 代码质量管理junit 自动自行单元测试JDK jdkTomcat 服务器几个war-->微服务架构
版本说明
jdk8.0(目前大部分公司内部使用的还是JDK8,大部分依赖java的工具或框架,对JDK8的支持度是最好的)maven3.5.3安装sonarqube
前置依赖mysql 5.6 or 5.7jdk 1.81.下载2.安装unzip并解压sonarqube并移动到/usr/local/unzip sonarqube-6.7.4.zipmv 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.proertiessonar.jdbc.username=rootsonar.jdbc.password=123456sonar.jdbc.url=改成步骤3创建的库名sonar.web.context=/sonarsonar.web.host=0.0.0.05.新增用户,并将目录所属赋予该用户
useradd sonarchown -R -sonar.sonar sonarqube-6.7.4/6.启动su - soanrsonar.sh start7.界面访问在界面产生令牌,并将项目代码使用以下命令进行提交由sonarqube进行分析,完成后,查看相应的分析结果安装jenkins
1.前置条件JDK,tomcat2.安装tomcat3.安装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 plugin2.安装sonarqube scanner for jenkins3.Publish Over SSH --发布到远程服务器系统配置:
系统管理-->全局工具配置1.配置jdk2.配置maven3.配置sonar4.邮件配置系统管理-->系统设置-->邮件通知smtp服务器 smtp.qq.compipeline特性
配置代码化(Group)将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。pipeline基本概念
stage:阶段,一个Pipeline可以划分为若干个Stage,每个stage代表一组操作。注意,stage是一个逻辑分组的概念,可以跨多个NodeNode:节点,一个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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!