Git 工作原理

一、Git 工作原理

1、Git 相关概念

Git是目前常用的分布式版本控制系统,与SVN这类的集中式版本控制系统不同,Git通过在每个人的电脑都设置一个完整的版本库,使得不需要联网也能使用Git提供的各种功能。而在进行多人协作时(涉及远程仓库),通过把各自的修改推送上去便可以看到各自的改动。下面介绍下与Git相关的几个概念,如下:

在这里插入图片描述

  • Workspace: 工作区,就是平时存放项目代码的地方
  • Index / Stage: 暂存区,用于临时存改动,事实上它只是一个文件,保存即将提交到文件列表信息
  • Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
  • Remote: 远程仓库,托管代码的服务器

2、Git 工作流程

Git的工作流程一般是这样的:

  • 在工作区中添加、修改文件
  • 将需要进行版本管理的文件放入暂存区域
  • 将暂存区域的文件提交到git仓库

因此,Git管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)

3、文件的四种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。Git不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用SHA-1算法计算文件的校验和。下面是文件状态的装换图,如下:

在这里插入图片描述

  • 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

4、几个区域常用命令

4.1、查看文件状态

# 查看指定文件状态
git status [filename]
# 查看所有文件状态
git status

4.2、工作区 – 暂存区

# 添加指定文件到暂存区
git add [file1] [file2] ...
# 添加当前目录的所有文件到暂存区
git add .
# 当需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用git rm
git rm file_path
# 从分支名为所写的分支名中拉取文件并覆盖工作区里的文件
git checkout + 分支名

4.3、工作区 – 资源库(版本库)

# 将暂存区信息提交到资源库(版本库)
git commit -m 'MR日志'
# 回退修改
git reset

4.4、远程操作

# 取回远程仓库的变化,并与本地分支合并
git pull
# 上传本地指定分支到远程仓库
git push

参考文档:
https://www.cnblogs.com/feng9exe/p/12780749.html
https://blog.csdn.net/caiji00001/article/details/131495589

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值