【Git学习第二篇】-深化学习指令和操作步骤

GIT的工作原理

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git客户端不需要复杂部署,直接默认安装即可使用。

GIT和SVN的区别

Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
Git 与 SVN 区别点:
1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统 都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
6.windown部署方式,二者基本差不多,直接部署即可。
7.GIT提供的操作指令,比SVN要多一些,基于在命令行上操作。SVN基于图形界面操作多一些。
GIT的工作原理
GIT会在本地创建一个本地仓库和工作区域、远程仓库,用户可以通过拉取,下传,传送,增加本地仓库。
在这里插入图片描述
SVN的工作原理
图形很直观看出来,许多用户直接传送本地项目代码给服务器,服务器做版本比较。
在这里插入图片描述

GIT的2分钟教程

快速增加的五分钟
#初始化仓库位置,告诉GIT需要上传的文件路径在哪里。
git init 文件夹
#初始化仓库后,需要增加新文件
git add 文件名
#提交版本,####备注修改内容描述
git commit -m “###”
#发布版本,第一条从远程仓库复制下来,第二条推送到远程仓库。
git clone ssh://example.com/~/www/project.git
git push ssh://example.com/~/www/project.git
#拉取远程服务器上项目到本地。
git pull http://git…example.com/project.git
#分支合并
git branch test #创建新的分支名字为test
git checkout test #切换到test分支
git checkout master #切换到主分支
#对其他分支更改不会反映在主分支上。如果想将更改提交到主分支,则需要切换回主分支,在进行合并
git checkout master
git merge test
git branch -d test #删除分支
已经超过5分钟的教程了,需要

GIT的超过2分钟教程,准备咖啡深入学习。

创建仓库,拉取指令操作

Git创建仓库指令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
克隆到本地操作指令
克隆到本地必须建立SSH连接,参考上篇文章https://blog.csdn.net/yi247630676/article/details/107385576
创建一个本地文件夹,将在我github中的代码文件下载到本地中,其中点.代表本地.也可以操作传送到别的仓库。
在这里插入图片描述

计算机本地文件夹中已经有下拉的项目文件。
在这里插入图片描述

基本指令操作

git init
使用git init在目录中创建新的Git仓库,可以在任何时候、任何目录中本地化。
上个例子演示过了,不操作演示了。
git clone
上个例子操作过过,翻页回去查看即可。

创建基本快照
Git的工作就是创建和保存本地项目文件的快照之后进行快照对比,这点和SVN有异曲同工之妙。
git add :将文件增加到工作区缓存中。
创建两个文件,reademe 、hello.py,使用status 指令查看文件类型。
在这里插入图片描述
修改文件后,文件状态呈现M的指令,再次使用add提交以后,在用status查看文件,状态又恢复为A。
在这里插入图片描述
git status
git status已查看在你上次提交之后是否有修改。
加-s以简单方式输出,如果没有加参数,会详细输出内容:
在这里插入图片描述
git diff
执行git diff来查看执行git status的结果详细信息。
git diff:尚未缓存的改动
git diff --cached :查看已缓存的改动
git diff HEAD:查看缓存的为缓存的所有改动
git diff -stat:显示摘要而非整个diff
修改hello.php文件内容,使用git diff指令进行对比
在这里插入图片描述
git commit
使用git add指令将想要加入快照的内容写入缓存区,并执行git commit 将缓存区内容添加到仓库中。
每次提交系统会记录你的名字和电子邮箱地址,所以需要配置用户信息。
使用 -m参数增加注释。
使用 -a参数:跳过提交缓存的流程,简化输出。
在这里插入图片描述
git reset HEAD
git reset HEAD命令用于取消已缓存的内容。

我们修改readme,hello.php
在这里插入图片描述

取消一个文件的缓存,再次提交到缓存区内,操作如下:
在这里插入图片描述

在执行git commit提交,只有在缓存区的文件被提交,hello.php没有被提交。
在这里插入图片描述
可以看到hello,php文件的修改并未提交。
这时我们可以使用一下命令将hello.php的修改提交,加参数-a进行提交。
在这里插入图片描述
简而言之,执行git reset HEAD以取消之前git add添加到缓存区的我文件,但不希望包含下一个提交快照的缓存。
git rm
删除指令
删除工作目录中的文件
在这里插入图片描述

删除缓存区中文件,但是工作目录保留
在这里插入图片描述
git mv
重命名指令
找回缓存中删除的路径,在此添加回来,修改为readme1.md文件。
在这里插入图片描述
Git分支管理
git的终极技能,相当于GIT是一个柜子,分支就是每个抽屉,合并就是把小柜子的抽屉的东西全部转移到主柜子里面。换个形式来讲,分支有许多个,每个开发者一个,不影响主线开发工作,又可以保证分支工作量和工作内容。记得分支创建属于一个工作目录内,切换别的工作目录就不含有该目录的分支。
1、创建测试文档,记得这个是在主分支下面创建,下面看看不同。
在这里插入图片描述
2、查看建设的分支,testing创建的新的分支。
在这里插入图片描述
3、创建新的分支testing后,在分支上创建和写文件,就可以在testing的分支上,git切换到别的目录,在原来分支上创建文件将不存在新分支的工作目录下。使用git checkout branchname来切换。
在这里插入图片描述
切换分支testing,删除test.txt后,切换master分支,他们又重新出现了。
在这里插入图片描述

使用git checkout -b branchname来直接切换登录分支操作。
在这里插入图片描述
如你所见,我们创建了一个分支,在该分支的上移除了一些文件 test.txt,并添加了 csdn.php 文件,然后切换回我们的主分支,删除的 test.txt 文件又回来了,且新增加的 csdn.php 不存在主分支中。
使用分支将工作切分开来,从而让我们能够在不同开发环境中做事,并来回切换。
删除分支
在这里插入图片描述
分支合并git merge
一旦分支有了新的独立内容,你终究希望他合并到主分支内,比如开发在分支做好了模块,项目经理就把分支的代码快拿到主分支上,进行进一步开发。(此次演示,在两个分支有独立内容合并。)
在这里插入图片描述

合并冲突#重点学习
(演示,两个分支内有相同名字文件的内容合并冲突。)合并不是简单的文件增加到分支工作区内,移除的操作,Git也会合并修改。
在这里插入图片描述
在主分支内查询修改csdn.php,内容自定义
在这里插入图片描述
创建新的分支change_site,将修改的内容提交到changge_site分支中。
在这里插入图片描述
再次切换到主分支,恢复到主分支修改的内容里面,我们再次修改csdn.php内容
在这里插入图片描述
现在将分支合并过来,分支相同csdn.php的内容也一并合并。
在这里插入图片描述
我们将一个分支合并到主分支,一个冲出就出现了。我们查看文件标记是呈现UU状态,通过git add增加,告诉Git文件冲突已经解决。
在这里插入图片描述
现在我们成功解决了合并中的冲突,并提交了结果。

Gitc查看提交历史
回顾提交项目的历史形态,可以使用git log命令查看

详细的章节,使用git log罗列历史提交记录:
在这里插入图片描述

可以使用–oneline选项来查看历史记录的简洁的版本
在这里插入图片描述
使用–graph参数,查看历史中什么时候出现了分支,合并。以下为相同的命令,开启拓扑图选项:
在这里插入图片描述

使用–reverse参数来显示逆向显示所有日志。
在这里插入图片描述

如果只想查找指定用户的提交日本可以使用–author
在这里插入图片描述

如果指定日期可以用–since ,–before ,untill,after等参数来实现。我这里面有历史指定,显示为空。
在这里插入图片描述
Git标签
如果完成一个里程碑,就给我们开发文件内打上标签。标签就好像书签一样,找寻的到也可以查找的到,方便查找和登记。
使用指令后,在注释里面写上自己的标签记录语言即可。-a是创建一个带有注释的标签,也可以不加
在这里插入图片描述
使用–decorate参数查询我们标签(装饰decorate)
在这里插入图片描述
如果我们忘记打标签给某个版本,直接发布了,也可以找寻发布的ID(实例最后一行,进行标签)
在这里插入图片描述
在这里插入图片描述
标签进行删除和展示
在这里插入图片描述
GIt to Github****GIt to Giee
此模块不做操作演示了,翻翻上个章节即可。GITEE也和GIthub差不多,都是公共云代码托管平台,经过SSH的公钥传输。不懂的留言,我在新章节发布演示。

总结Git的学习。
掌握GIT的工作原理和工作流程,在将GIT和SVN很大区别就是分支对比,GIT有分支相当于很多个抽屉,每个抽屉可以放不同开发者都开发模块,在留有一个大抽屉存放生产环境的开发文件。SVN相当于一个大抽屉,每次有服务器整理各个开发者不同的文件的对比,在存放在大容器下面。
学习GIT还只是入门,《闻道有先后,术业有专攻》,要到达精通还要磨炼加学习。
在这里插入图片描述
鸣谢:提供帮助的网友和runoob网。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值