Git项目管理工具——Git简介、版本控制、SVN 与 Git、Git 工作流程(Git 的作用、什么是版本控制、Local VCS、CVCS、DVCS、SVN)

目录

1. Git 简介

1.1 什么是 Git

1.2 Git 的作用

2. 版本控制

2.1 什么是版本控制

2.2 本地版本控制系统(Local VCS)

2.3 集中式版本控制系统(CVCS)

2.4 分布式版本控制系统(DVCS)

3. SVN 与 Git

3.1 SVN(集中式版本控制)

3.2 Git(分布式版本控制)

4. Git 工作流程

4.1 基本流程步骤

4.2 流程特点


1. Git 简介

1.1 什么是 Git

  • Git 是一个分布式版本控制系统(DVCS),最初由 Linus Torvalds 于 2005 年为管理 Linux 内核开发而创建。

  • 它可以跟踪文件的内容变化,记录每个版本的历史,支持多人协作,并允许在本地进行完整的版本管理。

1.2 Git 的作用

  • 记录项目中每一次文件修改,并可随时回退到任意历史版本。

  • 支持多人同时开发,通过合并功能解决版本冲突。

  • 离线即可提交和查看历史版本,安全性高,即使远程仓库丢失,也可从本地或其他仓库恢复。


2. 版本控制

2.1 什么是版本控制

  • 版本控制是一种记录一个或多个文件内容变化的系统,以便将来查阅特定版本修订情况。

  • 虽然示例中多用于软件源代码,但实际上可用于任何类型文件的版本管理。

  • 使用版本控制系统(VCS)可以:

    • 将文件回溯到之前状态,或将整个项目回退到过去某个时间点。

    • 比较文件变化细节,查出修改人和时间。

    • 追踪问题产生的原因,管理功能缺陷修复记录。

    • 即使误删或误改文件,也能轻松恢复。


2.2 本地版本控制系统(Local VCS)

  • 传统做法:复制整个项目目录作为不同版本,并改名加时间标记。

    • 优点:简单直接。

    • 缺点:容易混淆工作目录,可能误改或覆盖文件。

  • 改进方案:使用本地版本控制系统,通过数据库记录文件历次更新差异。

    • 代表:RCS(Revision Control System)。

    • 工作原理:保存文件修订前后的补丁集,通过应用补丁可恢复任意版本内容。

RCS(Revision Control System)的思路可以一句话概括为:“只存差异,不存整文件”。  
具体做法分三步:

  1. 初次检入(ci):把当前完整文件当作第 1 版(修订号 1.1)保存一份完整拷贝。
  2. 后续修改:用户再次检入时,RCS 用 diff 算法算出“上一个版本 → 当前版本”的最小补丁(即差异)。  这个补丁被追加到同一个 RCS 文件(,v 文件)里,并生成新的修订号(1.2、1.3 …)。  原完整文件可丢弃,磁盘上只留下“1.1 完整内容 + 1.2 补丁 + 1.3 补丁 …”。
  3. 取出任意版本(co):若想看 1.3 版,RCS 从 1.1 开始,把 1.2、1.3 两个补丁依次打回去,就拼出当时的完整文件。反向应用补丁还能回到旧版本,因此“前进/后退”都只需计算差异。

优点

  • 省空间:n 次修改往往只比 1 次完整文件多几 KB 的补丁。  
  • 操作简单:本地单文件即可管理,无需服务器。  

缺点  

  • 只擅长单文件,跨文件、跨目录的“项目级”版本管理较弱。  
  • 合并多人并行修改时不如现代分布式系统(Git、Mercurial)灵活。

2.3 集中式版本控制系统(CVCS)

  • 代表:CVS、Subversion(SVN)、Perforce 等。

  • 工作模式:中央服务器保存所有文件的修订版本,开发者通过客户端连接服务器获取最新文件或提交更新。

  • 优点

    • 所有人可查看他人修改情况。

    • 管理员易于分配权限和管理项目。

  • 缺点

    • 单点故障风险:服务器宕机时无法提交或协作。

    • 数据丢失风险:若服务器硬盘损坏且无备份,历史数据将全部丢失。


2.4 分布式版本控制系统(DVCS)

  • 代表:Git、Mercurial、Darcs 等。

  • 工作模式:客户端不仅获取文件快照,还会完整镜像代码仓库,包括全部历史记录。

  • 优势

    • 每次克隆都是一次完整备份,任何一个本地仓库都可恢复服务器数据。

    • 可与多个远程仓库交互,支持多团队、多流程协作。

    • 灵活的协作模式,例如层次模型式工作流,是集中式系统无法实现的。


3. SVN 与 Git

3.1 SVN(集中式版本控制)

  • 模式:依赖中央服务器进行版本管理,本地不保存完整版本库。

  • 优点

    • 结构简单、部署方便。

    • 适合对分支管理要求不高的小型团队。

  • 缺点

    • 必须联网并连接到中央服务器才能提交代码。

    • 容错性差:服务器宕机时无法进行版本管理。

    • 数据安全风险:一旦中央服务器数据丢失,无法恢复历史记录。

可以把 SVN 想象成一座“中央图书馆”:

1. 每人桌上只放自己正在看的书(当前代码),图书馆里才保存所有旧版本。
2. 想还书(提交代码)、查旧书(看历史)都必须亲自去图书馆刷卡——没网就去不了。
3. 如果图书馆失火(服务器硬盘坏了),所有旧书瞬间全没,大家的桌面只剩各自手里那一本。

所以:  
• 建馆简单:摆一台服务器就行。  
• 必须在线:断网就办不了借还。  
• 风险集中:馆没了,历史也跟着没了。


3.2 Git(分布式版本控制)

  • 模式:每个开发者本地保存完整版本库,包含所有历史记录和分支。

  • 优点

    • 支持离线操作,即使没有网络也能提交和查看历史版本。

    • 分支创建、切换、合并操作轻量高效。

    • 容错性高:即使远程仓库丢失,也可以从其他开发者的版本库中恢复。

  • 缺点

    • 初学者需要适应分布式的工作方式。

  • 适用场景:中大型项目、多分支并行开发、需要高效协作的团队。


4. Git 工作流程

4.1 基本流程步骤

  1. 克隆(Clone)远程仓库

    • 使用 git clone 命令从远程仓库复制一份完整的项目到本地,包括所有历史版本和分支。

  2. 修改或新增文件

    • 在本地工作目录中进行代码编写、修改或新增文件。

  3. 暂存更改(Stage)

    • 使用 git add 文件名 将修改过的文件添加到暂存区,准备提交。

  4. 提交到本地仓库(Commit)

    • 使用 git commit -m "提交说明" 将暂存区内容保存到本地仓库中,形成新的版本快照。

  5. 推送到远程仓库(Push)

    • 使用 git push 将本地仓库的更新同步到远程仓库,与团队成员共享。

  6. 拉取远程更新(Pull)

    • 使用 git pull 从远程仓库获取最新版本并合并到本地,保持代码一致性。


4.2 流程特点

  • 本地优先:所有提交先在本地完成,保证操作速度快且不依赖网络。

  • 分支协作:分支机制让多人开发互不干扰,最终通过合并完成协作。

  • 安全性:分布式存储减少单点故障风险,每个开发者都有完整备份。


END


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值