359-对git的认识和安装

git(大部分使用),github,svn(公司用)

git和svn的区别

在这里插入图片描述
在这里插入图片描述

SVN集中式

在早期,电脑资源稀缺,网络资源少,假设在公司上班,公司有一台电脑,视作服务器,公司把所有人的代码存一份在这个服务器上,称作项目代码。假如说公司是3个人一起开发,A,B,C三个人一起完成。有的人会在这个服务器上创建工程,创建用户,这3个用户ABC都可以登录到这个服务器上提交代码。在公司里,不需要上网,局域网就可以部署,我们自己把代码写好之后,就可以上传到服务器里面。
在这里插入图片描述

比如这个服务器上的项目代码有个fun函数,A去改了这个函数的几行代码,B也去这个函数定义了一些语句,可能存在多个用户同时修改了同一个文件的 同一个函数。
在这里插入图片描述
也许他们写的代码交叉一块了。这时候就可以通过svn。A的代码放上去,B的代码放上去,合起来。但是可能产生冲突了,逻辑顺序需要人工去操纵。
如果是A是增加一个add函数,B是增加一个max函数,互不影响,所以提交对服务器的逻辑顺序不影响,这时候不需要人工参与了。
我们要多提交代码,多下载代码!!!
问题:我们的代码版本本地都是最新的,天天在增加代码,对于A,B,C,代码量都在本地增加,每次都要从服务器拉取代码都需要网络,加上新增加的。如果服务器坏掉了,就麻烦了。我们提交上去后,只有最新的代码版本,没有历史的版本了。但是有时的开发,我们需要去看历史的版本。
集中式的管理,对服务器依赖高。

初步认识git

git是分布式的!!!
我们也需要服务器,服务器上也有项目代码。但是A,B,C三个人一起开发,项目代码不仅在服务器上存放,而且会在每个人的主机上都存放一份项目代码(拷贝)。每次我们每个人都会把代码直接提交到自己的本地,然后本地的仓库的代码和服务器仓库上的代码一交互。然后我们每个人在自己的本地上就会存储各个历史版本的代码。A,B,C,在写代码之前,都会从服务器拉取最新的代码,写完之后,在本地留存,然后和服务器的代码交互。
在这里插入图片描述
如果服务器挂掉了,我们把A,B,C中的最新代码送上去。
git原本是linux创始人写的工具。现在git被微软买过来了。

git的安装

在ubuntu上测试有没有安装,如下图说明未安装。
在这里插入图片描述
使用命令 sudo apt install git 进行安装。
在这里插入图片描述
安装后查看版本,如下图说明安装成功。
在这里插入图片描述

git的基本概念

四个工作区
git本地有三个工作域:工作区(working directory), 暂存区(stage/index), 资源库(repository)。如果再算上远程服务器上的git仓库(remote directory) 就可以分为四个工作域。其关系如下:
在这里插入图片描述
orkspace: 工作区,就是你平时存放项目代码的地方
Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

图解:首先我们在本地要创建一个工作区,这个工作区就是我们要写代码的地方,然后我们在本地通过执行git命令,会创建本地的代码仓库(存放代码),这个本地的代码仓库有两个区:暂存区,仓库。
举个例子,我们在工作区写代码,写了一个main.c,写完之后我们首先把它提交到暂存区,我们可以不断提交,改几次提交几次,也可以是多个文件一次提交,然后暂存区再把代码提交到仓库中,生成一个版本。然后我们还可以有一个远程仓库(github,gitee),我们把本地仓库的版本推到远程仓库中。也可以从远程仓库拉版本代码到本地仓库中。
在这里插入图片描述

工作流程
git工作的一般流程:
1、在工作目录中添加,修改文件
2、将需要进行版本管理的文件放入暂存区
3、将暂存区的文件提交到git仓库

文件的四种状态
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过,返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存,文件状态为Modified

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林林ZEYU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值