git版本控制软件

一、基础配置

1、安装
]# yum install -y git

2、配置用户信息
配置用户联系方式:名字、email
]# git config --global user.name "Mr.Zhang"
]# git config --global user.email "zk@qq.com"

配置写日志使用的文本编辑器
]# git config --global core.editor vim

查看配置信息
]# git config --list
user.name=Mr.Zhang
user.email=zk@qq.com
core.editor=vim

]# cat ~/.gitconfig
[user]
name = Mr.Zhang
email = zk@qq.com
[core]
editor = vim

二、应用
1、git的三个工作区域
工作区:编写程序的目录
暂存区:保存工作区文件到版本库之间的缓冲地带
版本库:保存每次提交的代码。在工作区中有一个.git的目录,它就是版本库

2、创建git工作区
(1) 全新创建
]# git init gittest # 将会出现gittest目录
初始化空的 Git 版本库于 /root/gittest/.git/

(2) 已存在目录
]# mkdir devops
]# cd devops/
devops]# echo 'hello world' > a.txt
devops]# git init .
初始化空的 Git 版本库于 /root/devops/.git/
devops]# ls -A # 可以查看到版本库.git
a.txt .git

2、在工作目录中加入新文件、修改a.txt
devops]# cp /etc/hosts .
devops]# echo '2nd line' >> a.txt
devops]# git status # 查看状态,修改后新文件未加入到版本库里
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# a.txt
# hosts
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

3、发现工作区中有未跟踪的文件,添加它们到暂存区
devops]# git add hosts # 加入指定文件
devops]# git add . # 把当前目录中所有文件加入跟踪
devops]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: a.txt
# 新文件: hosts
#

4、如果hosts是错误加入到暂存区的,可以根据git status提示,删除暂存区文件
devops]# git rm --cached hosts
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: a.txt
#
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# hosts

5、提交暂存区的文件到版本库
devops]# git add . # 将工作区所有文件加入到暂存区
devops]# git commit # 在跳出的vim中写入日志
devops]# git status # 干净的工作区
# 位于分支 master
无文件要提交,干净的工作区

6、继续编写程序,版本库添加一个文件
devops]# cp /root/anaconda-ks.cfg .
devops]# git add .
devops]# git commit -m "add new file /root/anaconda-ks.cfg"
devops]# git status
# 位于分支 master
无文件要提交,干净的工作区

7、查看版本库历史
devops]# git log

分支管理
1、git仓库中包含了一个默认的分支叫master
2、假如你正在编写代码,突然收到一个通知,代码有bug。我们的项目有很多人一起在开发,
可以指定某个人修改bug,其他人继续编写程序
3、正常编写程序的人员,仍然在master分支上工作,修改Bug的程序员新建一个分支,当bug
修复完成,再把他的分支合并到master上即可
新分支b1-->修复bug,C4
/ \
/ \
project(master分支) --> C1 --> C2 --> C3 --------------> master
(1) 生成新的分支,注意生成新分支的时候,master一定要是干净的
devops]# git branch b1 # 分支名为b1
devops]# git branch # 查看所有分支,当前所在分支前面有*
b1
* master

(2) 原有程序员继续在master分支上工作
devops]# cp /etc/motd .
devops]# git add .
devops]# git commit -m "add motd"

(3) 修复bug的程序员切换到分支b1上修复问题

(4) 切换到b1分支
devops]# git checkout b1
devops]# ls # 当前目录没有motd文件

(5) 修复bug
devops]# echo '3rd line' >> a.txt
devops]# git add .
devops]# git commit -m "insert to a.txt"

(6) 合并b1分支到主干
devops]# git checkout master
切换到分支 'master'
devops]# cat a.txt # 文件中有两行
devops]# git merge b1 # 合并b1分支到master
devops]# cat a.txt # 文件中有三行

(7) 如果b1分支确定不再使用,可以将其删除
devops]# git branch -d b1
devops]# git branch # 只有master分支

!!!!注意:切换checkout执行前务必保证status状态是干净的!

切换到以前版本
1、查看提交
devops]# git log # 每个commit后有一个ID号
2、通过ID号切换到历史某一次提交
devops]# git checkout 938eabb249956517d14b83829bd716d42b8f934c
注意:在历史提交中不要直接修改内容,如果需要修改,可以创建分支进行修改
3、回到最新状态
devops]# git checkout master

gitlab服务器
1、创建一台虚拟机,内存至少给4G
node1: 192.168.4.1 安装上docker并启动服务
2、导入docker镜像
node1 images]# docker load < gitlab_zh.tar
3、因为启动的容器需要用到22端口,所以将虚拟机的ssh服务绑定到其他端口
node1 ~]# vim /etc/ssh/sshd_config
Port 2222
node1 ~]# systemctl restart sshd
devops]# ssh -p2222 node1
4、启动一个gitlab容器
node1 ~]# docker run -d -h gitlab --name gitlab -p 443:443 \
-p 80:80 -p 22:22 --restart always -v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab gitlab_zh:latest
5、查看状态
node1 ~]# docker ps # 直到状态显示healthy,容器才能正常使用
6、浏览器访问http://x.x.x.x/ (虚拟机地址)
第一次登陆需要设置密码,用户名是root
7、重要概念
(1) 群组group: 可以给每个组织、团队创建一个group
(2) 成员member:每个用户对应一个用户,用户加到group中。
(3) 项目project: 一个团队可以开发很多软件项目,每个软件项目对应gitlab上的项目
8、创建名为devops的组、名为devops的项目和一个用户
再将用户添加到devops项目中,成为“主程序员”角色
9、切换成新用户,上传代码
(1) 方法一:上传代码可以采用http的方式,但是每次上传代码都需填写用户名和密码
(2) 方法二:通过ssh密钥,实现免密登陆、上传
在客户端生成密钥(真机)
]# ssh-keygen -t rsa -C "zzg@tedu.cn" -b 4096
]# vim ~/.ssh/id_rsa.pub 复制公钥 (粘贴到git项目秘钥里)
根据gitlab项目中的提示,上传代码
]# cd devops/ # 切到项目目录
将远程仓库改名,原名为origin,新名为old-origin
真机 devops]# git remote rename origin old-origin
如果出现以下错误,可以忽略
error: 不能重命名配置小节 'remote.origin' 到 'remote.old-origin'
将本地仓库添加到远程服务器
真机 devops]# git remote add origin git@192.168.4.1:devops/devops.git
推送代码到服务器
真机 devops]# git push -u origin --all # 推代码
真机 devops]# git push -u origin --tags # 推送标签tag
后续操作:本地编写代码,提交到git版本库,推送到服务器
真机 devops]# cp /etc/issue .
真机 devops]# git add .
真机 devops]# git commit -m "add issue"
真机 devops]# git push #查看git版本库是否多一个文件

如果推送的时候报错:permission error,解决方案如下:
真机 devops]# eval $(ssh-agent)

原文地址:https://www.cnblogs.com/mkmkmk/p/12177861.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


前言我们于2022年5月宣布推出 AmazonDevOpsGuruforServerless ,这是面向AmazonDevOpsGuru https://aws.amazon.com/devops-guru/的全新功能。通过此功能,开发人员能够提高无服务器应用程序的运行性能和可用性。该产品链接可点击:https://aws.amazon.com/devops-guru/fe
GIT、GITLAB、GITHUB、GITLIBGit是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Github - 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户。随着越来越...
初识JFrog Artifactory背景在软件项目开发中,一个项目常常依赖于大量的外部库,而这些外部库又在不断的进行版本更新,特别是在当前微服务开发越来越流行的情况下,一个服务依赖于多个服务,如何管理依赖库以及依赖版本,确保开发有序进行呢?JFrog ArtiFactoryArtiFactory是一款二进制存储管理工具,用来管理构建构建工具(如:gradle)等所依赖的二进制仓库,以方...
在删除文件夹的时候,可能会遇到文件夹正在使用,操作无法完成,因为其中的文件,或文件夹已在另一个程序中打开,请关闭该文件夹或或文件,然后重试。这类无法关闭删除文件夹的情况,如下图所示。 解决这个的关键是,找到是哪个程序在使用该文件夹,把这个程序关闭掉就行了。 但有时说实在的并不好找。 下面来介绍一个方便的找到这些程序的方法。 首先按ctrl+shitf+esc快捷键,打开任务管理器。然后...
xcopy 若目标盘上不存在此子目录,而在目标盘的结束符又不以&amp;amp;quot;&amp;amp;quot;为结束,则将提示:does destination specify a file name or directory name on the target[f=file,d=directory]?在目标盘上创建文件[按下]还是创建子目录[按下d] ?应选择d键如何在命令中指定copy的是一个文件或者目录?而不用再手动输入F或...
DevOps软件开发工艺解读随着业务复杂化和人员的增加,开发人员和运维人员逐渐演化成两个独立的部门,他们工作地点分离,工具链不同,业务目标也有差异,这使得他们之间出现一条鸿沟。而发布软件就是将一个软件想从鸿沟的这边送去那边,这之中困难重重。另一方面,行业竞争更加激烈,无论是客户还是公司自身,都要求软件能快速发布,频繁修改,而上边所说的这种隔阂,阻碍了开发团队的生产力,成了企业亟待解决的难题。面对...
创建任务创建任务比较简单,这里我们创建自由风格项目:General信息这里填写项目或任务的基本信息,如下:GitBucket这里我们用到的就以下两点,一个是参数化构建:构建的时候可以指定部分参数,比如这里我们这里指定要构建的分支作参数,第二个是丢弃旧的构建:这样每次构建都会丢弃之前历史构建,防止jenkins构建项目过多导致内存泄漏等问题:源码管理源码管理主要是填写我们要构建的...
一、在任务设置-构建触发器模块,选中“Build periodically”二、然后在日程表里输入你的定时构建时间,输入的时间语法参考如下:1、时间字段遵循cron的语法,每行由TAB或空格分隔的5个字段组成:MINUTE HOUR DOM MONOW DOW - 分钟:小时内的分钟数(0-59) - 小时 :一天中的小时(0-23) - DOM:月份的日子(1-31) ...
DevOps进阶(九)使用assembly plugin实现自定义打包assembly plugin的使用方式比较简单,主要有:1. 修改pom.xml pom.xml中设置如下:&amp;amp;lt;build&amp;amp;gt; &amp;amp;lt;plugins&amp;amp;gt; &amp;amp;lt;plugin&amp;amp;gt; &amp;amp;lt;artifactId&amp;amp;g
&amp;amp;lt;h2 id=&amp;quot;1-操作环境&amp;quot;&amp;amp;gt;&amp;amp;lt;strong&amp;amp;gt;1. 操作环境&amp;amp;lt;/strong&amp;amp;gt;&amp;amp;lt;/h2&amp;amp;gt;1. Windows:win72. JenkinsJenkins 1.6193. JavaJDK_1.7.0_64bit.exe4. Tomcatapache-tomcat-8.
在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。一.find命令基本格式:find path expres......
走近DevOps工程师我们之前已经听到很多谈论DevOps和DevOps世界的最新趋势的事情,但是就DevOps工程师本身,到底干些什么呢?在最纯粹的存在形式上来说,DevOps工程师是为了加快开发和运营团队之间的交付效率而存在的桥梁。DevOps工程师在软件生命周期中能带来什么?在传统的交付周期中,软件开发人员会在经年累月的编写代码后,将软件交给QA团队进行测试,然后将最终版本交给运营...
1、关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit。例如我jenkins的地址http://localhost:8080/,那么我只需要在浏览器地址栏上敲下http://localhost:8080/exit 网址就能关闭jenkins服务.2、重启Jenkieshttp://localhost:8080/restart3、重新加载配置信息http...
&amp;nbsp; &amp;nbsp;我们在执行Jenkins的项目构建的时候一般都是通过web管理界面中的”构建”来执行项目构建操作,但是除此之外我们还可以通过项目配置中的”构建触发器”来触发构建操作,其中”构建触发器”有一种方式是通过配置令牌远程触发项目构建;要启用Token(令牌)远程触发项目构建首先要保证Jenkins服务安装了build-token-root&amp;nbsp;插件,...
maven三种打包插件maven有多种可以打包的插件,如下: plugin function 官网 maven-jar-plugin maven 默认打包插件,用来创建 project jar maven-shade-plugin 用来打可执行包,executable(fat) jar http://maven.apache.org/plug...
Linux下查看和添加环境变量$PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接。编辑你的 PATH 声明,其格式为:PATH=$PATH:&amp;lt;PATH 1&amp;gt;:&amp;lt;PATH 2&amp;gt;:&amp;lt;PATH 3&amp;gt;:------:你可以自己加上指定的路径,中间用冒号隔开。环境变量更改后......
贾磊:高级质量经理&敏捷教练曾就职于外企、国企、大型上市企业等,担任过测试工程师、测试经理、项目经理、敏捷教练、质量总监、高级质量经理等岗位。是一名敏捷变革的爱好者和践行者。爱好网球、羽毛球。正文原文链接:https://www.scaledagileframework.com/continuous-explorati
在IT流行语的字母组合中,DevSecOps是一个很容易让人混淆的缩写。DevSecOps是一个特定工具吗?是否有DevSecOps流程或最佳实践?DevSecOps应该成为内部IT部门的优先事项,还是更广泛的公司理念?如果一个公司已经利用了DevOps的流程和技术栈,那么它应该升级到DevSecOps吗?或者这只
企业项目开发流程商城1.1B2C直销商城商家与会员直接交易(BusinessToCustomer)1.2B2B批发商城商家与商家直接交易1.3B2B2C购物平台商家和会员在另一个商家提供的平台上面进行交易1.4C2B定制商城会员向商家发起定制商品的需求,商家去完成。1.5O2O线上线下
jenkins清除工作空间报错 错误如下: Error:WipeOutWorkspaceblockedbySCM   解决方法:进入jenkins服务器,进入workspace,手动rmcd/var/jenkins_home/workspace  ===================注释==================如果你的启动命令如下:【进行了外部目录的挂载