前言
首先先说明git的作用。它是最流行通用的版本控制软件,一般来说有两个重要的应用。
作用一:团队项目协作开发。当一群人一起开发一个项目时,如何把大家写的代码整合到一起,还要同步更新,比如A写完的代码就要更新在B的电脑上,如果单纯的copy当然也不是不行,但是git可以让大家把已经写好的代码托管到仓库管理平台(如Github),再把代码推送给各位员工的电脑,从而实现同步,提高开发效率。
作用二:版本回退与更新。在实际的开发中,当目前版本不符合开发需求时,需要回退到之前的某一开发版本,如果没有git,我能想到的做法就是把每一份版本都保存在本地磁盘,然后等需要的时候在回溯到某一版本。这种方法不仅费时还费力。通过git,可以很轻松对版本进行控制。一切都储存在云端服务器,不需要大量的拷贝与替换。
由此可见,git对实际开发非常有用,所以掌握git也是程序员必备的一项技能。
安装Git与TortoiseGit
这里说明一下为什么要使用TortoiseGit,就是小乌龟,因为原来的git bash的命令行界面长这样:
对于很多的操作,都需要输入命令,还有其他乱起八早的东西,非常不方便。
TortoiseGit的图形化界面可以很好的帮助我们省去这些繁琐的步骤,此外他还有一些其他好用的功能,下面放一张图展示部分小乌龟右键菜单栏。
可以看出非常的直观和方便。对于新手来说也是非常友好的。下面给出下载链接和教程:
Git的下载链接:点此下载git
TortoiseGit的下载链接:TortoiseGit
如何安装git和TortoiseGit我就不多说了,教程很多,这里分享两个不错的文章Git 详细安装教程(详解 Git 安装过程的每一个步骤)
【TortoiseGit】TortoiseGit安装和配置详细说明
Github创建仓库
这里有两个推荐使用github的油猴插件,Github是默认没有中文的,这两个插件一个是翻译,一个是增强你Github的体验。Github 增强 - 高速下载,还有GitHub 中文化插件
首先登录Github账号,没有的话先去注册一个。GitHub: Let’s build from here · GitHub
然后点击这个新建仓库,如下图所示:
然后随便取个仓库名称,建议写个描述,描述中的内容将会被添加到README文件中。
然后勾选“添加README文件”,这个文件就是介绍这个仓库的一个类似于txt的文件,一般Github上的大多数项目都会有这个,勾选这个可以让我们的仓库不为空,有一个README.md文件。其他的可以看看,然后直接点击创建仓库就行了
构建好仓库后,就可以打开该仓库了,如果没问题的话,你的仓库应该长这样:
到这一步以后,我们的仓库就创建好了。接下来开始进行git的相关操作。
配置TortoiseGit
右键桌面任意位置,选择:TortoiseGit(T)->设置,打开小乌龟设置
然后按图设置,配置源选择全局,用户的信息选择好你的github用户名以及你的Github注册邮箱
到这一步Git就简单配置好了。下面将进行几个基础的Git操作说明。
Git基础操作
首先上一张图告诉你Git的原理。
Git的工作区包括项目目录中的所有文件,即您正在编辑和修改的文件。暂存区是一个虚拟的区域,用于暂存即将提交的更改,可以理解为一个缓冲区。版本库是Git存储项目历史记录和元数据的地方,包含了项目的所有版本信息、提交记录、分支信息等。远程仓库是位于远程服务器上的Git仓库,用于协作和共享代码,可以推送本地的提交到远程仓库或者从远程仓库拉取最新的更改。这些工作区域之间的交互和协作使得团队成员能够高效地管理和共享代码。
简要说明,远程库就是Github,工作区就是你的本地文件。比如你接下来克隆的项目就是你的工作区。
克隆(clone)
首先解释什么是克隆,克隆又称抓取(fetch),说白了就是下载,但是跟不同下载不一样的是,他会把该仓库的信息一并保存,这样就可以做后面的版本控制的操作。
回到你的Github页面,在这里点击右侧“代码”,复制URL地址,如下图
复制好了以后,找到你想要下载这个仓库的位置,鼠标右键空白处,点击“Git克隆”
打开后可以看到他已经把默认URL填上去了,其他设置先不要管,直接点击确定。
此时git将会从远端下载该仓库到此目录下,也就是从Github上下载,成功克隆会显示下图:
此时返回我们的文件夹就可以看到我们刚刚克隆的项目,点进去,如果默认显示隐藏的文件,将会看到一个.git文件夹,它里面应该储存的是git的相关信息
到这一步克隆操作就已经完成了。
提交(commit)
提交(commit)操作是将工作区的修改保存到本地版本库的过程。提交操作通常包括两个步骤:将修改添加到暂存区(staging area),然后将暂存区的内容提交到本地版本库。
首先在我们的这个本地仓库下新建一个文本文档,如图所示。
,然后返回上一级文件目录,右击我们的仓库,选择“Git提交(C)->“main”... ”
接着如下图所示,将更新后的本地仓库文件上传至暂存区,注意此时还没有上传到远端的服务器,也就是此时Github上的仓库还不会更新。第一个圆圈是我们要将该仓库放到哪个本地的版本库。注意第四个圆圈要勾上要push的文件。
按图所示设置好以后,点击确定就行了。
完成之后,我们本地的暂存区文件就已经更新了。提交操作完成。
推送(push)
推送(push)操作是将本地仓库的提交推送到远程仓库的操作,使得其他团队成员能够查看和获取您的最新更改。
如下图所示,还是像刚刚那样右键我们的本地仓库文件夹,选中小乌龟,点击推送(H)
到这个界面以后,直接点确定,就可以把本地仓库上传至远端
成功推送完后,可以返回我们的Github仓库网页,刷新一下,就能看到我们的仓库已经被更新了。
至此,推送操作完成。
版本控制()
终于到了版本控制的时候了。为了更好的说明我们的版本控制能如何进行,我们可以修改新建文本文档.txt中的内容,然后像刚刚那样提交到本地
还是通过右击我们本地仓库文件夹,选择小乌龟->“显示日志(L)”
打开之后的界面如下所示:
版本树的意思就是版本的变化。信息就是我们提交时的日志信息。这里选择我们要回退的版本,鼠标右键点击,选择 "重置"main"到此版本,如图所示。
之后如图所示,在重置类型中更选硬重置,其他不变。点击确定。
重置成功后,可以看到在日志中的main标签来到了刚刚所选中的版本。此时打开本地仓库文件夹,选中被修改的文件,发现文件内容从“今天我没吃饱”变成了“123”。版本回退成功。
同理,如果还想恢复到最新版本,只要重复上述操作即可。
至此,版本控制操作完成。
版本合并与解决冲突
合并(Merge)是将两个或多个分支的更改合并到一个分支的操作。通常情况下,合并是一个自动化的过程,Git会尝试将两个分支的更改合并到一起,如果没有冲突,则合并会自动完成。但是,当两个分支对同一部分文件进行了不同的修改,就会产生冲突。
解决冲突(Resolve Conflict)是在合并过程中发现文件冲突时,手动解决这些冲突的过程。冲突会出现在Git无法自动解决的情况下,需要您手动处理。
通俗来讲。比如员工一和员工二对同一片代码进行了修改导致了不同,那么再合并这两名员工的本地版本库时,到底该选择谁的代码?这个选择不能由git来帮我们完成,只能自己解决冲突。
下面就来对此进行说明。
首先学习如何查看版本分支图。打开我们刚刚的示范样例,接着对本地版本库文件右键,选择“版本分支图”选项。这一步可以查看我们的版本是如何分支的。
如图所示,main版本就是我们当前的版本。这里可以切换版本,删除版本等操作。一会儿进行说明。
接着对文件“新建文本文档.txt”的内容进行更改,改成“员工一代码”。接着返回上一级目录,右击本地版本库文件夹,选择“Git提交->main...”,如图所示
接着勾选上面的“新建分支”按钮,并取名 员工一,其他日志信息,作者日期等照旧选择,接着提交。
提交完后接着打开该版本库的版本分支图。如图所示。红色代表我们的本地版本库处于此版本,绿色代表其他的版本,多出来的黄色部分以及下面那串数字先不用管,往后就知道了。
接着回到文件夹中。右键选择我们的本地版本库文件,在小乌龟中选择“切换/检出(W)”,这一步的目的是将版本从员工一切换到main版本。
如图所示,选择main并切换,其他选项不要管
切换回main版本后,按同样的方法修改文件夹中的内容为“员工二代码”,新建员工二版本,之后打开版本分支图,此时如下图所示。我们要先合并员工一和员工二,在合并到main库中。
还是右键本地库文件,选择“合并”,打开合并窗口
之后勾选分支中的“员工一”,意思是将员工一与员工二合并。点击确定即可。
注意!此时小乌龟报错啦,他告诉我们存在冲突,这个冲突就是刚才员工一和员工二版本中,相同的文件有不同的代码,需要我们解决。这里点击确定,并返回点击“解决”
之后双击打开有冲突的文件,就是这个“新建文本文档.txt”
打开以后可以看到如下图所示的窗口,其中上面两个是冲突文件中的冲突内容,下面的??????指的就是需要更改的内容。这里我们对下面合并的文档进行修改。
之后打开上方的编辑栏选项,选择“标记为已解决”,意思就是冲突被干掉了,接着保存。
然后就可以返回我们的文件夹中。注意此时多出了“解决冲突”和“中止合并”的选项。意思就是我们现在在仍在合并操作中。如果我们需要在回去找冲突的文件,就点击“解决冲突”选项。但是我们已经解决好了,这里直接点击左侧的“Git提交->员工二”选项。
打开以后在这里可以看到提交的窗口。如下图所示设置好各个选项后,点击提交
提交完成后打开版本分支图,可以看到现在的员工一和员工二的版本不再是并列关系,而是员工二当前为最新版本。之后右键选择员工一,选择切换到员工一的版本。
之后我们接着打开员工一版本库文件下右键的小乌龟选项中的合并选项,在这里选择分支二。之后点击确定,这样就可以把员工一和员工二合并起来了。
合并后的版本控制图如下所示。
之后重复类似操作。切换到main版本,合并员工一的版本,合并成功后,此时的版本分支图如下所示:
在这里我们可以右键main版本,把员工一和员工二的分支标签删去,这里看个人选择。
删除完毕后,版本控制图就变成了如下图这样。此时main版本就是最新的版本。此时可以再进行别的推送,分支操作。
到此为止,版本合并与解决冲突操作完成。
补充内容
每一个版本都可以上传到Github上,从而形成分支,也可以形成版本控制。此外,在使用别人的开源项目时,也可以克隆下来,拉到自己的仓库。如果觉得自己改的比较好,也可以向原作者发送推送请求,在原作者审核后就可以成为该项目的维护者和贡献者之一。
最后,对于这篇文章中的内容,如有不对,欢迎指出