玖叶教程网

前端编程开发入门

版本控制系统Git完整图文教程(版本控制系统git完整图文教程图片)

作者/@Java讲坛杨33


大部分从事软件开发的小伙伴,最先开始接触的版本控制系统应该是SVN吧,主要原因还是早些年,企业使用SVN蛮多的,并且上手确实容易的多,但是最近这些年越来越多的企业要求会使用Git。所以现在还不学习Git,还真有点不思进取的意思。


下载操作Git命令的Windows客户端:Git bash

下载方式可参考我写的另外一篇文章:Windows系统安装操作gitee仓库的工具:Git bash

Git的本地仓库和远程仓库

多人协调开发时,每个开发人员就是在自己电脑的本地仓库进行代码的版本维护。

只有需要共享代码、合并代码时,才向远程仓库上传代码。

接下来我们分别实际操作下本地仓库和远程仓库。

本地仓库


1、新建本地仓库

需使用命令:git init,在本地文件夹创建一个本地Git仓库。

此时,执行命令git init后,本地文件夹下多了一个.git文件夹,它就是本地Git仓库了。

2、添加工作区的文件到本地仓库中

这部分有两个步骤。第一,先将文件添加到本地仓库暂存区;第二,然后将暂存区的文件提交到本地仓库。

第一,将新建的文件添加到本地仓库暂存区中,使用命令:git add 新建1.txt

执行完命令后,此时,还可以使用命令:git status,来查看文件的状态。

第二,将暂存区的文件提交到本地仓库,使用命令:git commit -m "提交新文件"

-m参数是为了添加本次提交的注释信息。

下图很清晰的显示了commit之前跟之后的仓库状态。所以使用命令git status可以很方便的了解到,本地仓库被新建或者修改的文件,进行到哪一步了,接下来应该做哪一步了。

远程仓库

本次使用的是在码云服务器(https://gitee.com/)上搭建远程Git仓库。

搭建教程请参考:新建远程仓库

1、接下来,我们上传已经执行commit到本地仓库的文件到远程仓库。

  • 上传之前,我们首先在本地仓库去关联远程仓库地址。

操作命令为:git remote add origin https://gitee.com/yangj433/test.git

origin,意思是给远程仓库起了一个名字。

https://gitee.com/yangj433/test.git,意思是远程仓库的地址。

  • 关联之后,就可以将本地仓库的文件上传到远程仓库了。

执行命令为:git push -u origin master

origin:远程仓库的名字。

master:本地仓库的名字,该名字是在执行命令git init时,默认给本地仓库起的名字。

-u:关联远程仓库和本地仓库。

刷新远程仓库,就能看见本地仓库发送过来的文件。

克隆远程仓库文件到本地文件夹

在本地文件夹打开Git bash工具,执行命令为:git clone https://gitee.com/yangj433/test.git

就能把远程仓库的所有文件都克隆到本地文件夹下,并且是已经存在.git文件夹的本地仓库。

接下来,我们依据两个本地仓库,来模拟不同的两位开发人员,修改文件之后,如何操作对远程仓库的发送、拉取文件的。

如图,两个本地仓库:

在本地仓库1,修改文件,执行add、commit操作之后,发送到远程仓库中。

在本地仓库2,从远程仓库拉取最新代码,这个最新代码就能看见仓库1修改的内容。

拉取命令为:git pull origin master

本地仓库新建分支

我们从前面的介绍了解到,master是git默认分配的一个分支名称。但是在实际工作的开发中,并不建议直接在该master分支上进行各种文件变更操作。而是新建另外一个开发用的分支,当这个分支下的代码测试没有问题时,再添加到master分支上。这样可以保证master分支的每次提交都是稳健的版本。

查看当前本地仓库下都有哪些分支,执行命令:git branch

创建开发分支,执行命令:git branch dev

因为默认使用的是master分支,提交代码还是在master分支上操作。所以如果下次想将文件提交到新建的开发分支dev上,就要切换分支,执行命令:git checkout dev

查看本地仓库的分支所有提交日志

查看日志的命令为git log或者git log --oneline

从日志中,可以看到是谁提交的,提交的时间等等信息。

合并分支

我们在上面新建了一个开发分支dev,如果在这个分支下,修改、新增文件后,如何合并到主分支master上呢?接下来就学习下,合并分支的步骤。

  • 首先,我们先切换到开发分支dev下;
  • 然后修改文件;
  • 执行add、commit命令。

此时,没合并之前,切换到分支master时,可以看到刚刚在分支dev下修改过的内容是看不到的。

  • 在分支master下,执行合并分支的命令git merge dev

上面的合并比较简单。单方面的修改,即主分支master未改变,开发分支dev做了变更。

那如果两个分支,即主分支master和开发分支dev对同一文件做了修改。此时出现冲突,怎么解决冲突呢?

合并冲突

首先我们来重现下冲突的场景。

  • 主分支master下修改文件,并执行add、commit命令。
  • 切换到开发分支dev下,也对同样的文件做修改,并执行add、commit命令。

此时,切回到主分支master下合并文件修改,就会出现冲突问题。

解决冲突问题:

  • 打开冲突文件,可以看到=======将两方修改的内容清晰的划分出来,此时只需要确定哪些是不必要的修改,删掉即可。然后再做一次add、commit命令。

今天的知识讲解到这儿,更多干货正在马不停蹄的制作中。


作者:杨33,北京互联网公司在职Java开发,专注分享写作干货。欢迎关注我,期待你的点赞评论。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言