【Git】快速入门安装及使用git与svn的区别常用命令

一、导言

1、什么是svn?

        SVNSubversion的简称,是一个集中式版本控制系统。与Git不同,SVN没有分布式的特性。在SVN中,项目的代码仓库位于服务器上,团队成员通过向服务器提交和获取代码来实现版本控制。SVN记录了每个文件的修改历史,包括作者、时间和具体更改内容等信息。

        使用SVN时,团队成员需要从中央代码仓库中检出项目的最新代码,并在本地进行开发和修改。一旦完成工作,他们将代码推送回中央代码仓库以共享变更。SVN提供了一系列命令和功能,如更新代码、提交代码、查看历史记录、比较文件差异等,以便团队成员协同工作和管理代码版本。然而,由于SVN是集中式的,当网络连接中断或者服务器出现故障时,团队成员可能无法提交或获取最新代码。

1.1、svn的利

  1. 简单易用:相对于Git而言,SVN的命令和操作相对简单,学习曲线较为平缓。对于一些非技术背景或刚接触版本控制的开发者来说,使用SVN更容易上手。
  2. 集中化管理:SVN采用集中式的工作方式,所有代码都保存在服务器端,可以集中管理和控制代码的访问权限,方便团队协作、控制代码质量和安全性。
  3. 安全性:由于所有代码保存在服务器上,避免了本地代码丢失的风险,并且管理员可以管理和监控每个用户的操作,保证了代码的安全性。

1.2、svn的弊

  1. 需要网络连接:由于SVN是集中式的,需要与中央代码仓库进行交互,因此必须有稳定的网络连接。如果网络中断或服务器故障,将无法提交或获取最新代码,从而影响开发流程。
  2. 不支持离线工作:SVN需要与远程服务器交互,开发者无法在离线情况下进行代码修改和提交,限制了在没有网络连接的环境下的自由开发能力。
  3. 分支管理复杂:相比于Git,SVN的分支管理相对较为复杂。分支的创建、合并和删除需要手动操作,并且可能会面临一些冲突解决的挑战。
  4. 存储效率低:由于SVN采用基于差异的版本控制方式,每次提交只保存进行的更改,存储效率相对较低。尤其是在大规模项目中,占用的存储空间较大。

2、什么是Git?

        Git是一个分布式版本控制系统,用于管理和跟踪软件开发项目的源代码。它能够记录整个项目的历史更改,包括每个文件的修改、添加和删除,以及每次提交的作者和时间等信息。通过使用Git,团队成员可以协同工作并共享代码,并且能够轻松地撤销或回滚更改,解决合并冲突以及自动识别和处理代码更新。Git也提供了分支功能,使得开发者能够在独立的分支上开展工作,最后再将分支合并到主线上。这使得多人同时开发同一项目变得更加容易和安全。

2.1、Git的利

  1. 分布式版本控制:Git是一个分布式版本控制系统,每个开发者都可以拥有完整的代码库复本,并且可以离线工作。这使得团队成员可以独立进行开发和提交变更,而不会受到网络连接或服务器故障的影响。
  2. 强大的分支管理:Git的分支管理功能非常强大和灵活。开发者可以轻松地创建、合并和删除分支,实现独立开发和并行工作。这对于团队协作和多个功能或修复并行进行时非常有益。
  3. 快速操作和高性能:由于Git本地存储了完整的代码副本,可以在本地进行快速的代码查看、提交和切换。相比于集中式的版本控制系统,Git的操作通常更快速,尤其在大型项目中表现更优秀。
  4. 丰富的工具生态系统和社区支持:Git拥有庞大的用户群体和活跃的开源社区,提供了丰富的工具和扩展。还有许多第三方工具和服务,如GitHub,提供了代码托管、协作和Code Review等功能。

2.2、Git的弊

  1. 学习曲线较陡:相对于SVN等集中式版本控制系统,Git的学习曲线较为陡峭。它有许多高级功能和命令,对于初学者来说,可能需要一定的时间和精力来熟悉和掌握。
  2. 存储占用较大:由于Git存储了完整的代码副本,每次提交都会增加存储空间的消耗。尤其是在项目历史变得庞大时,会产生更多的磁盘空间需求。
  3. 强大的功能和灵活性带来复杂性:Git的强大功能和灵活性可以使其变得复杂和难以理解。例如,分支合并和解决冲突可能需要一些技巧和经验来处理。

3、区别

        Git相对于SVN在分布式特性、分支管理和强大的版本控制能力上有优势。但SVN由于简单易用和集中式的特点,在某些场景下仍然被广泛使用。选择使用哪种版本控制系统取决于项目的需求、团队的工作流程和开发者的偏好。它们的设计思想和工作方式上存在一些显著区别。

  1. 分布式 vs 集中式:最明显的区别是Git是一个分布式版本控制系统,而SVN是一个集中式版本控制系统。在Git中,每个开发者都拥有完整的代码仓库副本,可以离线工作并提交变更。而SVN中的代码仓库位于服务器上,开发者通过向服务器提交和获取代码来进行工作。
  2. 版本管理方式:Git以增量快照方式保存代码的不同版本,每次提交都会创建一个新的快照,并记录父快照的引用关系,从而构建出一棵提交历史的有向无环图。SVN则采用基于差异的方式,只存储每次提交的差异,相较于Git,SVN对存储空间的占用更为高效。
  3. 分支管理:Git的分支管理非常灵活和强大,可以轻松创建、合并和删除分支,并且支持同时存在多个独立开发的分支。而SVN的分支管理相对简单,通常需要手动创建分支,并且在合并分支时较为复杂。
  4. 性能:由于Git拥有完整的代码仓库副本,在大型项目中可以提供更快的操作速度。SVN的性能在大规模项目上可能受到网络连接和服务器性能的限制。

这里是我所理解的一个区别:

  1. 去中心化
    1. GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。     
  2. git仓库的任何一个拷贝都可以独立作为一个服务器来使用
  3. 在Git中文件有四种状态:
    1. 未跟踪(untrack):表示文件为新增加的
    2. 已修改(modified):表示修改了文件,但还没保存到git仓库中。
    3. 已暂存(staged):表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中
    4. 已提交(committed):表示文件已保存在git仓库中。
  4.  其它
    1. GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
    2. GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏
  5. 直接记录快照,而非差异
    1. GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
  6. 直接记录快照,而非差异
    1.      GIT分支和SVN的分支不同,分支在SVN中一点不特别,就是版本库中的另外的一个目录。
  7. git存在分支。

二、git的使用

1、创建仓库

  1. 进入工作台 - Gitee.com官网进行登录注册。
  2. 在首页点击创建仓库,填写完之后创建即可。
    1. 仓库名称路径根据你自己的来进行填写,这两个也是必须要填写的。
    2. 如果你是新手我建议这边选中开源

2、Windows安装Git

进入Git - Downloads (git-scm.com)下载2.22以上的版本。

【注意】不要安装在C盘(win10会有权限问题)。

  1. 下载完成后双击安装选中安装路径。
  2. ①默认不会在桌面创建图标,并且增加了一个新的特性
    ②将GItBash添加到Windows terminal中,建议勾选。
  3. 选择一个默认的编辑器,默认为Vim(Linux的),里面还有Notepad,我选择使用Vim。
  4. 在Git创建分支后的默认的名字(master),如果没有特别的使用默认的设置,点击next即可
  5. 默认推荐为第二个,不包含全部的工具。第三个是git 和 Unix全部工具
  6. 开启https连接,保证数据传输数据的安全,按照默认的选择即可
  7. 额外的配置选项,这里面默认都没有选,可以将这两个选框勾选上,支持(node、python)然后选择install
  8. 启动git Bash 查看发行说明  可以不用选中
  9. win + R cmd 输入:git --version 查看版本 
  10. 或者在电脑的任意位置右键看见这两个就说明安装成功了。

3、上传仓库

  1. 创建一个新的仓库,创建完成后记住或者保存这个界面,会用到。
  2. 在本地新建一个用来上传的文件夹,右键点击 Git Bash Here ,会出现一个命令窗口。
  3. 一次运行创建仓库出现的命令。
    ①运行第一个命令会在你的用户下面 出现一个文件。
    ②执行第二个框选的命令,当我们执行到git init的命令后会有一个隐藏的文件夹,我们执行完命令之后会弹出一个登录的窗口,登录即可。

  4. 上传完成

快速上传:

  1. 把我们的文件放入已经创建好的仓库文件夹里面
  2. 在命令窗口里面 输入命令 : git add .
  3. git commit -m "新提交的文件" : 提交之后在git是看不到你的文件的
  4. git push :推送到git

4、仓库下载资源

  1. 拿到我们需要克隆的地址。
  2. 创建一个新的文件夹用于克隆。
  3. 输入命令:git clone [url]:克隆远程仓库到本地。
  4. 克隆完成

三、git常用命令

Git有许多其他命令和选项可供使用。可以通过运行git --help或查阅Git文档来获取更详细的命令说明和用法。以下是一些常见的Git命令及其功能:

  1. git init:初始化一个新的Git仓库。
  2. git clone [url]:克隆远程仓库到本地。
  3. git add [file]:将文件添加到暂存区。
  4. git commit -m "message":提交暂存区的文件,并添加提交信息。
  5. git status:查看工作区和暂存区的状态。
  6. git log:查看提交历史记录。
  7. git branch:查看分支列表。
  8. git checkout [branch]:切换到指定分支。
  9. git merge [branch]:将指定分支合并到当前分支。
  10. git pull:拉取远程仓库的最新代码。
  11. git push:推送本地代码到远程仓库。
  12. git remote add origin [url]:关联本地仓库与远程仓库。
  13. git diff:查看工作区与暂存区的差异。
  14. git reset [commit]:撤销提交,并将HEAD指针移动到指定的提交。
  15. git stash:将当前修改保存到临时存储区,以便切换分支或恢复后再次应用。

四、git常用命令理论

这些命令是Git的基础,可以帮助你管理你的项目和协作与他人。在使用这些命令时,你需要理解其背后的理论,包括版本控制、分支管理、合并和解决冲突等概念,才能更好地使用Git来管理你的项目。

下面是一些常用的Git命令及其理论:

  1. git init:这个命令用于创建一个新的Git仓库。当你运行这个命令时,Git会在当前目录下创建一个新的.git目录,这个目录包含了所有Git需要的数据和元数据。
  2. git clone:这个命令用于克隆一个Git仓库到本地。你可以通过这个命令下载一个远程仓库到你的本地机器上,这样你就可以查看该项目,或者对其进行修改。
  3. git add:这个命令用于将文件添加到暂存区,准备提交。根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。
  4. git commit:这个命令用于提交暂存区中的文件到仓库。你可以通过这个命令将暂存区中的文件提交到你的本地仓库。
  5. git push:这个命令用于将本地仓库中的文件推送到远程仓库。你可以通过这个命令将你本地的修改推送到远程仓库,以便其他人可以看到和共享你的更改。
  6. git pull:这个命令用于从远程仓库中拉取文件到本地。你可以通过这个命令从远程仓库中下载最新的更改到你的本地机器上,以便你可以查看和修改这些文件。
  7. git merge:这个命令用于合并两个分支。你可以通过这个命令将两个分支的更改合并到一起。
  8. git rebase:这个命令用于将一个分支的更改应用到另一个分支上。你可以通过这个命令将一个分支的更改应用到另一个分支上,而不是合并两个分支。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/165069.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库SQL

数据库&SQL 数据库基本概念数据库DataBase定义 数据库管理系统(DBMS)定义在JAVA项目中与数据库的结合数据库管理系统中常见的概念库与表的关系 SQL数据类型数字类型浮点类型字符类型TEXT类型日期类型 SQL语言的分类DDL:数据定义语言修改表结构的注意事项 DML:数据操作语言D…

基于显著性的无人机多光谱图像语义杂草检测与分类

Saliency-Based Semantic Weeds Detection and Classification Using UAV Multispectral Imaging(2023) 摘要1、介绍2、相关工作2.1 监督学习2.2 半监督学习2.3 无监督学习 3、方法3.1 贡献3.2 PC/BC-DIM NEURAL NETWORK(预测编码/有偏竞争-分裂输入调制…

智能文件改名:高效复制并删除冗余,简化文件管理“

在繁杂的电脑文件世界中,如何高效地管理文件成为了许多人的难题。为了解决这一难题,我们推出了一款智能文件改名工具,它能够轻松复制文件并删除目标文件夹中的冗余文件,让您的文件管理更加高效便捷。 第一步,我们要打…

IP代理中的动态轮换住宅代理是什么?有何作用?

随着越来越多的企业完善网络活动,IP代理的重要性变得显而易见。代理可确保顺利、安全且不受限制地访问互联网的大量资源。在不同类型的代理中,轮换代理脱颖而出,那么他哪里有别于其他IP代理呢? 一、什么是动态轮换代理&#xff1f…

OAuth 2.0实现统一认证

OAuth 2.0协议概念: OAuth 是 Open Authorization 的简写。OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第…

​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​

软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】 课本里章节里所有蓝色字体的思维导图

mediapipe流水线分析 二

目标检测 Graph 一 流水线上游输入处理 1 TfLiteConverterCalculator 将输入的数据转换成tensorflow api 支持的Tensor TfLiteTensor 并初始化相关输入输出节点 ,该类的业务主要通过 interpreter std::unique_ptrtflite::Interpreter interpreter_ nullptr; 实现…

香港高才通计划申请条件、通过率、百强大学名单以及好处分析!

香港高才通计划申请条件、通过率、百强大学名单以及好处分析! 香港高端人才通行证计划简称香港高才通计划,是香港于2022年年底推出的一项人才引进计划。 目的是吸引世界各地具备丰富工作经验及高学历的高端人才到香港探索机遇,高端人才包括高…

【milkv】添加LCD屏GC9306

前言 本章介绍如何添加LCD屏GC9306驱动。 电路图 dts build\boards\cv180x\cv1800b_milkv_duo_sd\dts_riscv\cv1800b_milkv_duo_sd.dts &spi2 {status "okay";/delete-node/ spidev0;gc9306: gc93060{compatible "sitronix,gc9306";reg <0&g…

成集云 | 英克对接零售O2O+线上商城 | 解决方案

方案介绍 零售O2O线上商城是一种新型的商业模式&#xff0c;它通过线上和线下的融合&#xff0c;提供更加便捷的购物体验。其中&#xff0c;O2O指的是线上与线下的结合&#xff0c;通过互联网平台与实体店面的结合&#xff0c;实现线上线下的互动和协同。线上商城则是指通过互…

selenium自动化测试入门 —— 键盘鼠标事件ActionChains

在使用 Selenium WebDriver 做自动化测试的时候&#xff0c;会经常模拟鼠标和键盘的一些行为。比如使用鼠标单击、双击、右击、拖拽等动作&#xff1b;或者键盘输入、快捷键使用、组合键使用等模拟键盘的操作。在 WebDeriver 中&#xff0c;有一个专门的类来负责实现这些测试场…

竞赛选题 深度学习手势识别 - yolo python opencv cnn 机器视觉

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…