01: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/luwei0915/p/10536037.html

时间: 2024-08-01 00:28:10

01:git: 版本控制软件的相关文章

(转) Git版本控制软件结合GitHub从入门到精通常用命令学习手册

转载自:爱分享 » Git版本控制软件结合GitHub从入门到精通常用命令学习手册 原文传送门: http://www.ihref.com/read-16369.html 注意: 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册:http://git-scm.com/book/zh GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划

Git版本控制软件结合GitHub从入门到精通常用命令学习手册

GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以及参数. 本手册将从入门到精通指导大家. 首先,我们要从如何以 Git 的思维方式管理源代码开始. 如何以 GIT 的方式思考(这里可以不用看懂,接着看下面的内容,看完就全懂了.) 懂得 Git,第一件重要的事情就是要知道它与 Subversion.Perforce 或者任何你用过的版本控制工具都有

Git版本控制软件—学习手册

注意: 学习前请先配置好Git客户端 相关文章:Git客户端图文详解如何安装配置GitHub操作流程攻略 官方中文手册:http://git-scm.com/book/zh GIT 学习手册简介 本站为 Git 学习参考手册.目的是为学习与记忆 Git 使用中最重要.最普遍的命令提供快速翻阅. 这些命令以你可能需要的操作类型划分,并且将提供日常使用中需要的一些常用的命令以及参数. 本手册将从入门到精通指导大家. 首先,我们要从如何以 Git 的思维方式管理源代码开始. 如何以 GIT 的方式思考

Git前世今生-版本控制软件的发展

版本控制软件发展至今已有40多年的历史. 最早的版本控制软件是1972年由Marc J. Rochkind开发的SCCS (Source Code Control System),通过将不同版本下的文件单独保存的形式完成,将同一版本的所有文件打包保存.SCCS使用了长达10年的时间,直到1982年RCS的问世. 1982年,Walter F.Tichy 发布了RCS (Revision Control System),提供了较SCCS更多的功能,并作为GNU项目的一部分. 1986年创建的CVS

SVN 集中式版本控制软件

简介: 目前流行的版本控制软件中,SVN ( 集中式版本控制 ) 算是使用范围更广.且使用时间更早的一款了,现在 git ( 分布式版本控制 ) 更火爆一点. 一.安装svn [[email protected] ~]# yum -y install subversion [[email protected] ~]# svn --version #查看版本号 svn,版本 1.6.11 (r934486) 二.配置svn 1.创建工作目录及版本库 [[email protected] ~]# m

使用Android Studio 哪些文件可以直接被版本控制软件忽略

常用的版本控制软件git,svn 也用过有点奇葩的vs2005,但是没有研究过怎么去忽略文件 要忽略的文件包含编译生成的文件和同事之间有版本差异的文件 在这里简单介绍下 1.   .gradle 2.   .idea 3.   build文件夹 4.   local.properties 5.  项目的.iml文件 6. 目录下的/build整个文件夹 7. 项目的.iml文件

Spring Boot中使用Actuator的/info端点输出Git版本信息

对于Spring Boot的Actuator模块相信大家已经不陌生了,尤其对于其中的/health./metrics等强大端点已经不陌生(如您还不了解Actuator模块,建议先阅读<Spring Boot Actuator监控端点小结>).但是,其中还有一个比较特殊的端点/info经常被大家所忽视,因为从最初的理解,它主要用来输出application.properties配置文件中通过info前缀来定义的一些属性,由于乍看之下可能想不到太多应用场景,只是被用来暴露一些应用的基本信息,而基本

GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流(转载)

最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮助. GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Git仓库 :git init ; -- 提交改变到缓存 :git commit -m 'desc

DICOM:开源DICOM书籍之“git版本库合并”

背景: 之前翻译的DICOM3.0标准是在本地创建的git仓库,并非在github上创建,此时别人是无法访问的,当初的目的是想待标准翻译初步完成后再提交到github上. 然而由于本地的翻译工作采用MarkDownPad进行编辑,文档中的图片需要有一个公网URL才能在文档中显示(注:马克飞象工具是可以直接将剪切板中的图像插入到MarkDown文档致中的,目前马克飞象已经出了Windows和IOS的客户端,下载),因此就在Github上创建了DICOM-Chinese的仓库,并在其中创建了Figu