Git 版本控制工具的详细介绍

2024-04-03 渥太华微生活
来源:知乎 | 初出茅庐

1688713744586.gif

Git (Global Information Tracker) 是一款免费开源的版本管理工具,很多开源软件、企业的项目开发都使用Git进行版本管理。项目中引入版本管理系统,可以大大简化项目的开发流程,更方便后续的管理和维护。

5e2a15c9b3437b2c33018f6f_1_e1ypr2go9cvgbbqrgub2qw.gif


1.1、版本控制

无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况

v2-0e96eb42835efe37121ba6b52657344c_720w.jpg


1.2、开发中存在的问题

程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光荣下岗!几个月来的努力付之东流!

v2-5f6f89a7af54297a9556daeb37300a7a_720w.jpg

老王需要在项目中加入一个很复杂的功能,一边尝试,一边修改代码,就这样摸索了一个星期。可是这被改得面目全非的代码已经回不到从前了。

v2-c1b67fc8948a8e0d14c39f48844af89d_720w.jpg

小明和老王先后从文件服务器上下载了同一个文件

v2-8248c0ed0cfc7c38bb4ef52b32582dfb_720w.jpg

因项目中Bug过多,导致项目进度拖延,项目经理老徐因此被骂,但不清楚Bug是手下哪一个程序员写的

v2-624867d4647e06e95fed7b0404a3e5d3_720w.jpg

开发中要解决的问题:

代码备份

版本控制

协同工作

责任追溯


1.3、SVN版本控制

SVN (SubVersion) 集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。

  • 服务器单点故障

将会导致所有人员无法工作

  • 而服务器硬盘损坏

这意味着,你可能失去了该项目的所有历史记录,这是毁灭性的。

v2-8c716aeef56c6144f02a738c2a403551_720w.jpg


1.4、Git版本控制

Git 是在2005年,Linux系统的创建者Linus Torvalds,为了帮助全球的开发者,维护Linux系统内核的开发而开发了自己的开源分布式版本控制工具,分为两种类型的仓库:本地仓库和远程仓库。

  • 每一个客户端都保存了完整的历史记录

服务器的故障,都可以通过客户端的记录得以恢复。

v2-cc5f68fcfa06011a27d35d32e51ceedf_720w.jpg


2.1、Git的下载

官网下载地址:https://git-scm.com/downloads

v2-641ef495ca040ba81df2202e0783c3e8_720w.jpg


2.2、Git的安装

1、双击安装包,进入安装向导界面

v2-beae91d7aa62c53268d30f4fe073caf9_720w.jpg

2、指定安装目录

v2-4a3bca0c84557bfbd59c2d243bff0a81_720w.jpg

3、一路next下一步

v2-8330f3adf20fa2508ca4aad5a8aea91b_720w.jpg

4、等待安装

v2-775ec828b598a684c2a54075932904ce_720w.jpg

5、安装完成

v2-dc655662149068b617dc7e6e393ed036_720w.jpg

6、安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。

v2-5bfe993381b7b314280baa6a65de661b_720w.jpg

7、运行Git命令客户端,使用git --version 命令,可以查看git版本。

v2-7244f11c48200fef9e8a58eab3cf0a83_720w.jpg


3.1、Git基本工作流程

本地仓库

v2-2ce9809aba0a1b251db64bb2892db362_720w.jpg


3.2、Git命令行操作

  • git常用命令

2024-04-03_111053.jpg

  • 操作步骤

创建工作目录、初始化本地 git 仓库

v2-d1788b1cf78a82dcaaa154493c0dd8c2_720w.jpg

新建一个 test.txt 文件(暂不执行添加操作)

使用 status 命令,查看状态

v2-3765d8b95092cc79f6597ba8e0ad17b7_720w.jpg

使用 add 命令添加,并查看状态

v2-68c72459c99d4697cb879fb01a19ded7_720w.jpg

使用 commit 命令,提交到本地历史仓库

v2-f1df7dfaa708894b02f200c65ff8c8da_720w.jpg

使用 log 命令,查看日志

v2-c39d628b5da7e7a1f3e3720b5d8f0f4d_720w.jpg

修改 test.txt 文件

v2-3783380a8e5013c2510d4614cdfc6ab9_720w.jpg

添加并提交,查看日志

v2-3c5a42e21382505b8d269a96ac05d9ad_720w.jpg

4. Git版本管理


4.1 历史版本切换

v2-4e9df35ad991ccc656f79dacda561889_720w.jpg


准备动作

  1. 查看 my_project 的 log 日志git reflog :可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作)

  2. 增加一次新的修改记录

需求: 将代码切换到第二次修改的版本

指令:git reset --hard 版本唯一索引值

git-pull-rebase.gif


4.2 分支管理介绍

分支

  • 由每次提交的代码,串成的一条时间线

  • 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线

分支的使用场景

周期较长的模块开发假设你准备开发一个新功能,但是需要一个月才能完成第一周写了20%的代码,突然发现原来已经写好的功能出现了一个严重的Bug那现在就需要放下手中的新功能,去修复Bug但这20%的代码不能舍弃,并且也担心丢失,这就需要开启一个新的版本控制。

尝试性的模块开发业务人员给我们提出了一个需求,经过我们的思考和分析该需求应该可以使用技术手段进行实现。但是我们还不敢确定,我们就可以去创建一个分支基于分支进行尝试性开发。

分支工作流程

  • Master: 指向提交的代码版本

  • Header: 指向当前所使用的的分支

v2-f0bb114b1fc5a0213e19b112432df8a9_720w.jpg


4.3 分支管理操作

创建和切换

创建命令:git branch 分支名切换命令:git checkout 分支名

新分支添加文件

查看文件命令:ls

总结:不同分支之间的关系是平行的关系,不会相互影响

合并分支

合并命令:git merge 分支名

删除分支

删除命令:git branch -d 分支名

查看分支列表

查看命令:git branch


5. 远程仓库

5.1 远程仓库工作流程

v2-e7a4895f0ff0e8825c77198ad96c1a39_720w.jpg


5.2 远程仓库平台介绍

GitHub

域名:https://github.com

介绍:GitHub是全球最大的开源项目托管平台,俗称大型程序员社区化交友网站

各类好玩有趣的开源项目,只有想不到,没有找不到。

码云

域名:https://gitee.com

介绍:码云是全国最大的开源项目托管平台,良心平台,速度快,提供免费私有库


5.3 先有本地项目,远程为空

步骤

  1. 创建本地仓库

  2. 创建或修改文件,添加(add)文件到暂存区,提交(commit)到本地仓库

  3. 创建远程仓库

  4. 推送到远程仓库

创建远程仓库

v2-e877f0f6f076a27938d936da316079cd_720w.jpg

v2-17cbf620996d684bebc6a1acbb261f91_720w.jpg

  • 生成SSH公钥

推送代码之前,需要先配置SSH公钥

v2-a1ed14a27995647fbe53a84f330606a6_720w.jpg

  • 生成SSH公钥步骤

设置Git账户

git config user.name(查看git账户)

git config user.email(查看git邮箱)

git config --global user.name “账户名”(设置全局账户名)

git config --global user.email “邮箱”(设置全局邮箱)

cd ~/.ssh(查看是否生成过SSH公钥)

v2-758f307e82c05921fd44ff91e1d487cb_720w.jpg

查看命令: cat ~/.ssh/id-rsa.pub

命令: ssh -T [email protected]

生成SSH公钥

生成命令: ssh-keygen –t rsa –C “邮箱” ( 注意:这里需要敲3次回车)

v2-3e080f8103632ad51d55015e0b6297ee_720w.jpg

v2-7cbd6befdf95ca94ac8e9fcaba32711f_720w.jpg

公钥测试

设置账户公钥

v2-357680085fee385a0c0b32610b618924_720w.jpg

v2-7bdbb5f2a7f620c2b3cfaaa96861005c_720w.jpg

v2-dd311cb0d311c1772d9240f9583ca8c3_720w.jpg

推送到远程仓库

步骤

命令:git remote add 远程名称 远程仓库URLgit push -u 仓库名称 分支名

v2-92d68a0a9f92422635ba1e5b9d2ae480_720w.jpg

v2-42bd0dd9fd24e06e90a5b6cf49f48e76_720w.jpg

为远程仓库的URL(网址),自定义仓库名称

推送


5.5 先有远程仓库,本地为空

步骤

  • 将远程仓库的代码,克隆到本地仓库克隆命令:git clone 仓库地址

  • 创建新文件,添加并提交到本地仓库

  • 推送至远程仓库

  • 项目拉取更新拉取命令:git pull 远程仓库名 分支名


5.6 代码冲突

产生原因:

两个程序员操作同一个文件,其中一个程序员在修改文件后,push到远程仓库,另一个程序员应该先pull将最新的代码更新到本地仓库后,在修改代码,之后push到远程仓库,结果他没有先pull将最新的代码更新到本地仓库,而是直接将自己的代码push到远程仓库,这样就可能会导致代码冲突

v2-64f68b3735da63fff9fa0249cf04c258_720w.jpg

v2-045221117ff7b5826f3c55ccc6805e6d_720w.jpg

v2-5b29930230a69be69ab063a00d60185d_720w.jpg

如何解决冲突

<<<<<<<和>>>>>>>中间的内容,就是冲突部分

修改冲突行,保存,即可解决冲突。

重新add冲突文件并commit到本地仓库,重新push到远程


6. IDEA集成Git

6.1 IDEA中配置Git(应用)

File -> Settings

v2-baac497813b82af04bb62701b9d6cf2b_720w.jpg

Version Control -> Git -> 指定git.exe存放目录

v2-9de10d4767aaa72333c6af11f67bf745_720w.jpg

点击Test测试

v2-00cf29021fef33fbd4de46aa0f82bcd8_720w.jpg


6.2 创建本地仓库

VCS->Import into Version Control->Create Git Repository

v2-063e84c74ae47a99dce51c7959403c8f_720w.jpg

选择工程所在的目录,这样就创建好本地仓库了

v2-ce65b4a4de9e6eb599061164a97bc2cd_720w.jpg

点击git后边的对勾,将当前项目代码提交到本地仓库

注意: 项目中的配置文件不需要提交到本地仓库中,提交时,忽略掉即可

v2-8de07c8d41e13bc5b7444571b19f7373_720w.jpg


6.3 版本切换

方式一: 

控制台Version Control->Log->Reset Current Branch...->Reset

这种切换的特点是会抛弃原来的提交记录

v2-a14d4b7b6b77ff6473206ef64ca21ead_720w.jpg

方式二:

控制台Version Control->Log->Revert Commit->Merge->处理代码->commit

这种切换的特点是会当成一个新的提交记录,之前的提交记录也都保留

v2-7145350e2c15fdeca28c2a7bf94ba19f_720w.jpg

v2-88df0d55e7c0879695afd96cc05b51dc_720w.jpg

v2-f1d0df6fd04b8be70a6910fc19175295_720w.jpg


6.4 分支管理(应用)

创建分支

VCS->Git->Branches->New Branch->给分支起名字->ok

v2-f12db30fb6155f9c62e8325973717812_720w.jpg

切换分支

idea右下角Git->选择要切换的分支->checkout

v2-ab4cee5b86efcbe0dedcd45d9aea013d_720w.jpg

合并分支

VCS->Git->Merge changes->选择要合并的分支->merge

v2-98bc077319db69c03e34108e673401ed_720w.jpg

处理分支中的代码

v2-8ff954e4b8e7e5220943058bac5ea2a8_720w.jpg

删除分支

idea右下角->选中要删除的分支->Delete

v2-59937e7f841a0a6a70c56a5412c8bfb2_720w.jpg


6.5 本地仓库推送到远程仓库(应用)

VCS->Git->Push->点击master Define remote

v2-25ffb806e9c1f3d3cf47d98f0334e7aa_720w.jpg

将远程仓库的路径复制过来->Push

v2-d64a3808f1d2a221915fcafe62b35a2a_720w.jpg


6.6 远程仓库克隆到本地仓库(应用)

File->Close Project->Checkout from Version Control->Git->指定远程仓库的路径->指定本地存放的路径->clone

v2-2a7c7d2285a9ef4a6dee6bbb870c0a3b_720w.jpg

二维码 | 渥太华微生活

编者注:新闻取自各大新闻媒体,新闻内容并不代表本网立场!文字和图片来自网络,版权归原作者所有。如有侵权,请速联系小编,立即删除。

121
全部评论 (0)
展开快速发表评论

科技专栏