随着软件开发复杂度的不断提升和交付速度的不断加快,DevOps(开发运维一体化)作为一种融合了开发与运维的新型工程实践方法,正在逐渐成为业界的主流趋势。而在这一过程中,版本管理作为软件开发的基础支撑,其重要性不言而喻。
在DevOps工程流程中,Git版本管理作为一款强大且灵活的工具,发挥着举足轻重的作用。它不仅为开发团队提供了高效的代码管理和协作机制,还深度融入了持续集成、持续部署(CI/CD)的各个环节。通过Git,开发者可以轻松管理代码分支、解决合并冲突、追溯版本历史以及控制访问权限,进而大幅提升开发效率与代码质量。本文将详细解析Git在DevOps工程流程中的应用价值,并探讨其如何助力团队实现更高效、更可靠的软件开发与运维管理
一、概述
Git作为当前最先进、最主流的分布式版本控制系统,以其免费、开源的特性,成为了程序员的必备技能。其核心能力在于版本控制,特别是面向代码文件的版本控制,能够记录并管理代码的任何修改历史,允许恢复到以前的任意时刻状态。Git支持跨区域多人协作编辑,是团队项目开发的必备基础。
Git的优势包括:
-
本地有完整的仓库,无网络也能正常工作。
-
遇到问题回退版本容易,不影响其他人。
-
轻量的分支开销鼓励大量使用,适合敏捷迭代。
-
开源免费,使用广泛。
-
强大的文档(代码)历史版本管理,支持回滚、对比。
-
分布式多人协作的代码协同开发。
-
简单易用的分支管理。
二、Git 安装及配置
1、git安装
官网下载Git ,前往Git官网下载并安装,按照提示完成安装过程。
2、git配置文件
Git有三个主要的配置文件,优先级从低到高为:系统全局配置、用户全局配置、仓库/项目配置。
-
系统全局配置(--system):适用于系统所有用户和所有仓库的配置信息,存放在Git安装目录下。
-
用户全局配置(--global):当前系统用户的全局配置,存放在用户目录下,存放用户目录 C:\Users\[系统用户名]\.gitconfig。
-
仓库 / 项目配置(--local):仓库(项目)的特定配置,存放在项目目录下 .git/config。
3、初始化用户
-
安装Git后,首先需要配置用户信息,包括用户名和邮箱地址。这些信息将在每次提交文件时带上,以便查看历史记录时知道是谁提交的。
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
-
--global
:config
的参数,表示用户全局配置。如果要给特定仓库配置用户信息,则用参数--local
配置即可,或直接在仓库配置文件.git/config
里修改。
3、配置.gitignore
在工作区根目录下创建 .gitignore 文件,文件中配置不需要进行版本管理的文件、文件夹。.gitignore 文件本身是被纳入版本管理的,可以共享。有如下规则:
-
#
符号开头为注释。 -
可以使用 Linux 通配符:
* 代表任意多个字符;
? 代表一个字符;
[abc] 代表可选字符范围;
{string1,string2,…} 代表可选的字符串等。
-
感叹号 ! 开头:表示例外规则,将不被忽略。
-
路径分隔符 /f 开头:,表示要忽略根目录下的文件 f。
-
路径分隔符 f/ 结尾:,表示要忽略文件夹 f 下面的所有文件。
#为注释
*.txt #忽略所有“.txt”结尾的文件
!lib.txt #lib.txt除外
/temp #仅忽略项目根目录下的temp文件,不包括其它目录下的temp,如不包括“src/temp”
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
三、常用的 Git GUI
如果不想使用命令行工具,可以安装Git的GUI工具,如SourceTree、TortoiseGit、GitHub Desktop、GitKraken等。这些工具使得Git的使用更加简单、舒适,不过仍需了解Git的基础知识,推荐使用SourceTree。
-
SourceTree:老牌的Git GUI管理工具,适用于Windows和Mac系统,内置中文版,功能强大且使用简单,支持Git Flow。
-
TortoiseGit:SVN时代就很流行的代码管理GUI利器,只有Windows版本,支持中文,开源免费,与文件管理器集成良好,内置冲突对比解决工具。
-
GitHub Desktop:GitHub官方出品的Git管理工具。
-
GitKraken:跨平台的GUI Git客户端,有免费版、专业版和企业版,功能丰富。
1.SourceTree
SourceTree 的官网下载安装包,支持 Window、Mac 系统,按照提示完成安装。
-
SourceTree 支持管理多个仓库,通过
+
按钮,可选择多种方式添加仓库。
-
然后就是可视化的仓库管理了,不用记住繁琐的指令(参数)了,可视化操作。
四、git分支
分支是从主线分离出去的“副本”,可独立发展、编辑、提交,也可以和其他分支合并。分支是Git的核心功能之一,创建、切换、删除都非常快且轻量。
-
分支切换:使用
git checkout [branch]
切换分支,HEAD指向当前活动的分支。如果切换时有未提交的修改,且修改与待切换的分支没有冲突,则切换成功且未提交修改会一起带过去;如果有冲突,则会报错,提示先提交或隐藏。 -
合并分支:使用
git merge [branch]
将分支合并到当前分支。合并过程可能有快速合并(Fast forward)、普通合并(有冲突时需要人工处理)等情况。 -
变基(Rebase):另一种合并分支的方法,将分支上的修改生成补丁,然后在目标分支上应用补丁,产生新的提交。变基后的提交历史更简洁,但会改变提交历史。
git高效分支管理规范:https://blog.youkuaiyun.com/heijunwei/article/details/143820569
五、标签管理
标签(Tags)是对某个分支某个特定时间点的状态的固定“指针”引用,一经创建不可移动。常用于标记版本,发布时一般会打一个版本标签。
-
使用
git tag [tagname]
给当前提交打标签。 -
使用
git tag [tagname] [commit]
给指定提交打标签。 -
使用
git show-ref
查看所有标签。 -
使用
git tag -d [tagname]
删除标签。
六、撤销变更
Git提供了多种撤销变更的方法,包括撤销未提交的修改、撤销已提交但未push的提交、撤销已push的提交等。
-
撤销未提交的修改:使用
git checkout [file]
撤销工作区的修改,使用git reset HEAD [file]
撤销暂存区的修改。 -
撤销已提交但未push的提交:使用
git reset --hard [commit]
回退到指定提交,但这种方法不安全,会改变提交历史。更安全的方法是使用git revert [commit]
撤销某一次提交,创建一个新的提交来撤销之前的提交。 -
撤销已push的提交:先本地撤销(使用reset或revert),然后强制推送(
git push origin -f
),但这种方法非常危险,可能导致其他人丢失工作,应慎用。
七、IDEA集成Git
1、设置git.exe

2、本地库的初始化操作:

3、本地库初始化完成了,生成了.git目录:

4、添加到暂存区,再提交到本地库操作; add +commit:


5、代码推向远程库

6、使用IDEA克隆远程库到本地


克隆到本地后,这个目录既变成了一个本地仓库,又变成了工作空间。
7、解决冲突
在你push以后,有冲突的时候提示合并操作:

8、如何避免冲突
【1】团队开发的时候避免在一个文件中改代码
【2】在修改一个文件前,在push之前,先pull操作