【C++八股-第四期】git 分布式版本控制系统 - 24春

提纲:

👉八股:

  1. 简单说一下大端、小端。
  2. 什么是git?
  3. 为什么要用git?
  4. 简述集中式版本控制库和分布式版本控制库的区别
  5. 简述Git 与 SVN 区别
  6. 简述diff 与 patch 区别
  7. git常用命令

👉 代码:

一、C++八股内容: 1、简单说一下大端、小端。

换句话说👇:存在字符串: 

高有效位   →   12 34 56 78  →     低有效位

小端:低地址位   →   78 56 34 12→     高地址位

大端:低地址位   →   12 34 56 78→     高地址位

助记:

大端模式:符合阅读习惯,高字节存放在低地址,低字节存放在高地址;类似于把数据当作字符串顺序处理

小端模式:低字节存放在低地址,高字节存放在高地址;即高地址部分权值高,低地址部分权值低

2、什么是git?

  • Git 是一个开源的分布式版本控制系统,用于快速高效地处理任何或小或大的项目。最初是为了帮助管理Linux内核开发的一个开放源码的版本控制软件。
  • Git应用十分广泛,小到我们平时使用github网站,大到公司中多人合作的大型项目开发。
  • 它速度快,完全分布式,允许成千上万个并行开发的分支,容灾性能强。

git分为哪几个区?分别是什么?

①工作区(Workspace)是电脑中实际的目录。

②暂存区(Index)类似于缓存区域,临时保存你的改动。

③仓库区(Repository),分为本地仓库和远程仓库。

通常提交代码分为几步:

①  git add  从工作区提交到暂存区

②  git commit  从暂存区提交到本地仓库

③  git push  或  git svn dcommit  从本地仓库提交到远程仓库

3、为什么要用git?

让你回答为什么用git,其实就是让你说之前的版本控制系统为什么不好

最开始的版本控制方法一般都是采用人工手动控制。

- 缺点:

  • 千人千面,不同版本命名随意
  • 有时无法快速辨别版本新旧
  • 无法快速知道版本1相比版本2自己改了什么
  • 如果要是多人开发,那命名和版本控制更为可怕

4、简述集中式版本控制库和分布式版本控制库的区别

  • 备份集中式存在单点故障,一旦故障,没法恢复,所以备份极其重要;分布式则更安全,出现故障可以恢复数据,每一个节点都是一个服务器。
  • 服务器压力集中式所有的操作都要与服务器交互,操作首先于带宽,不能移动办公;分布式全是离线操作,不受限于带宽,可以移动办公。
  • 安全性集中式容易出现单点故障,遭受黑客攻击;分布式数据、提交全部使用SHA1哈希,以保证数据完整性,甚至提交可以使用PGP签名。
  • 工作模式集中式合适人数不多的项目,集中管理;分布式适合很多人的项目。

集中式和分布式最根本的区别就是:

分布式每个人的电脑上都可以直接拷贝完整的代码版本。而集中式只能拷贝自己需要的。

分布式的服务器挂掉之后,不会影响工作。而集中式的服务器挂掉之后,根本就没法进行工作。

5、简述Git 与 SVN 区别

SVN:

Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。

  • Git是分布式的,SVN是集中式的;这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
  • Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
  • Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
  • Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
  • Git分支廉价,SVN分支昂贵;Git 分支是指针指向某次提交,而 SVN 分支是拷贝的目录。这个特性使 Git 的分支切换非常迅速,且创建成本非常低。
  • 适配性:
  • SVN不适合的领域:
  • 跨地区的协同开发(因为局域网之外延迟巨大)
  • 对代码的高质量追求和代码门禁
  • Git不适合的领域:
  • 不适合Word等二进制文档的版本控制
  • 原因:Git 无锁定/解锁模式,故不能排他式修改。
  • 二进制文件(基于值编码),即为自定义的编码。每一个字符的编码都可能不同,所以git才没法操作。————(还有基于字符编码)ASCII码 & UTF-8
  • 整体的读授权,不能将读授权精细到目录级别
  • 解决方案:版本库按照目录拆分

6、简述diff 与 patch 区别

  • 在最初的版本控制出现之前,有 diff 和 patch 被用于版本控制。
  • diff
  • diff是Linux里的命令,用于比较文件的差异。
  • diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
  • patch
  • patch是Linux里的命令,用于修补文件。
  • patch指令让用户利用设置修补文件的方式,修改,更新原始文件。
  • patch是diff的反向操作

7、git常用命令 工作准备:

  • git clone —— 工程克隆

查看工作区:

  • git diff —— 查看工作区修改内容
  • git status —— 查看工作区文件状态

文件修改后提交推送:

  • git add —— 新增文件到缓存区
  • git rm —— 删除文件到缓存区
  • git mv —— 移动文件到缓存区
  • git commit —— 提交更改的文件
  • git push —— 推送到仓库

查看日志:

  • git log —— 查看当前分支上的提交日志

新建分支:

  • git branch:创建后不会切换至新分支;
  • git checkout -b 创建后会切换至新分支;

更新分支:

  • git pull 拉取远端服务器更新内容后自动与当前分支合并;
  • git fetch 拉取远端服务器更新内容后不与当前分支合并,需要手动merge

代码推荐:剑指Offer(说在**中的题号)

第一天:

  • 剑指 Offer 26
  • 剑指 Offer 27
  • 剑指 Offer 28

第二天:

  • 剑指 Offer 10-I
  • 剑指 Offer 10-II
  • 剑指 Offer 63

第三天:

  • 剑指 Offer 42
  • 剑指 Offer 47

相关阅读:

【Java八股】:点击跳转

【简历制作】:点击跳转

【C++八股】:点击跳转

全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司8个岗位
点赞 评论 收藏
分享
明天不下雨了:这个项目 这个简历 这个模板 莫不是一个开源的
点赞 评论 收藏
分享
评论
2
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务