【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:这个命令用于将一个分支的更改应用到另一个分支上。你可以通过这个命令将一个分支的更改应用到另一个分支上,而不是合并两个分支。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter+ant+jenkins接口自动化测试

平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成。Jmeter 支持接口的测试,Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可以构成一个功能完善的接口自动…

聊聊室内导航在应用方面

大家去大型的商场时,应该都见过一些提示牌,微信扫一扫导航。当拿微信扫了之后,就会打开一个小程序,里面显示整个商场的二维或三维的平面结构,以及当前自己的位置。此时可以通过手机快速的查看商场内其他的商铺、公共区…

SQL Server SSIS的安装

标题SQL SERVER 安装 下载SQL SERVER数据库:(以SQL SERVER 2022 Developer版本)(https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads?rtc1) 以administrator权限安装: 下载完成后,会出现以下界面&a…

R语言 PPT 预习+复习

什么狗吧发明的结业考&#xff0c;站出来和我对线 第一章 绪论 吊码没有&#xff0c;就算考R语言特点我也不背&#xff0c;问就是叫么这没用。 第二章 R语言入门 x<-1:20 赋值语句 x 1到20在x上添加均值为0、标准差为2的正态分布噪声 y <- x rnorm (20, 0, 2) 这…

【leaflet】1. 初见

▒ 目录 ▒ &#x1f6eb; 导读需求开发环境 1️⃣ 概念概念解释特点 2️⃣ 学习路线图3️⃣ html示例&#x1f6ec; 文章小结&#x1f4d6; 参考资料 &#x1f6eb; 导读 需求 要做游戏地图了&#xff0c;看到大量产品都使用的leaflet&#xff0c;所以开始学习这个。 开发环境…

微服务中配置文件(YAML文件)和项目依赖(POM文件)的区别与联系

实际上涉及到了微服务架构中的两个重要概念&#xff1a;服务间通信和项目依赖管理。在微服务架构中&#xff0c;一个项目可以通过两种方式与另一个项目建立依赖关系&#xff1a;通过配置文件&#xff08;如YAML文件&#xff09;和通过项目依赖&#xff08;如POM文件&#xff09…

【每日一题】逃离火灾

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;二分枚举空间复杂度&#xff1a; O ( m n ) O(mn) O(mn)。 写在最后 Tag 【二分答案】【BFS】【数组】【2023-11-09】 题目来源 2258. 逃离火灾 题目解读 现在有一个人在一个二维网格的左上角&#xff0c;坐标 (0, 0…

SpringCache(Redis)

一、springcache是什么 springcache是spring的缓存框架&#xff0c;利用了AOP&#xff0c;实现了基于注解的缓存功能&#xff0c;并且进行了合理的抽象&#xff0c;业务代码不用关心底层是使用了什么缓存框架&#xff0c;只需要简单地加一个注解&#xff0c;就能实现缓存功能了…

pytorch中常用的损失函数

1 损失函数的作用 损失函数是模型训练的基础&#xff0c;并且在大多数机器学习项目中&#xff0c;如果没有损失函数&#xff0c;就无法驱动模型做出正确的预测。 通俗地说&#xff0c;损失函数是一种数学函数或表达式&#xff0c;用于衡量模型在某些数据集上的表现。损失函数在…

计算机网络期末复习-Part2

1、网络应用程序体系结构 &#xff08;1&#xff09;客户端/服务器&#xff08;C/S&#xff09;体系结构&#xff1a; 客户端/服务器&#xff08;C/S&#xff09;应用程序&#xff1a; Web浏览器与Web服务器&#xff1a;当您使用Web浏览器&#xff08;客户端&#xff09;访问…

Scala爬虫如何实时采集天气数据?

这是一个基本的Scala爬虫程序&#xff0c;使用了Scala的http library来发送HTTP请求和获取网页内容。在爬取天气预报信息时&#xff0c;我们首先需要创建一个代理对象proxy&#xff0c;并将其用于发送HTTP请求。然后&#xff0c;我们使用http库的GET方法获取网页内容&#xff0…

linux修改rocketmq的日志文件位置

文章目录 &#x1f50a;修改rocketmq的日志文件位置&#x1f4d5;原来的文件&#x1f4cc;修改后文件&#x1f4c7;rocketmq中的Rocketmq_client.log文件在配置文件中改不了 需要在代码logback文件中进行修改&#x1f58a;️最后总结 &#x1f50a;修改rocketmq的日志文件位置 …

【Linux】 awk命令使用

AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&#xff0c;Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 语法 awk [选项] [文件] awk [选项] [程序] [文件] awk命令 -Linux手…

cookie 里面都包含什么属性?

结论先行&#xff1a; Cookie 中除了名称和值外&#xff0c;还有几个比较常见的&#xff0c;例如&#xff1a; Domain 域&#xff1a;指定了 cookie 可以发送到哪些域&#xff0c;只有发送到指定域或其子域的请求才会携带该cookie&#xff1b; Path 路径&#xff1a;指定哪些…

Spring Boot 3系列之-启动类详解

Spring Boot是一个功能强大、灵活且易于使用的框架&#xff0c;它极大地简化了Spring应用程序的开发和部署流程&#xff0c;使得开发人员能够更专注于业务逻辑的实现。在我们的Spring Boot 3系列之一&#xff08;初始化项目&#xff09;文章中&#xff0c;我们使用了Spring官方…

gitlab-ce-12.3.5 挖矿病毒及解决方案

前言 最近发现在使用gitlab提交代码的时候总是失败&#xff0c;一访问gitlab还时常报503&#xff0c;于是使用 top 命令查看了内存占用情况&#xff0c;发现了一个git进程内存使用了2.3g&#xff0c;cpu还一直占用300-400%&#xff0c; 以前不知道gitlab还有病毒&#xff0c;只…

[论文阅读]PV-RCNN++

PV-RCNN PV-RCNN: Point-Voxel Feature Set Abstraction With Local Vector Representation for 3D Object Detection 论文网址&#xff1a;PV-RCNN 论文代码&#xff1a;PV-RCNN 简读论文 这篇论文提出了两个用于3D物体检测的新框架PV-RCNN和PV-RCNN,主要的贡献如下: 提出P…

ubuntu 安装redis详细教程

下载redis安装包 链接如下&#xff1a; http://redis.io/download 本例版本为&#xff1a;redis-7.2.3.tar.gz 下载安装包到目录/opt下&#xff0c;路径可修改&#xff0c;本例为/opt wget https://github.com/redis/redis/archive/7.2.3.tar.gz 解压安装包&#xff0c;并…

解决 SSLError: HTTPSConnectionPool(host=‘huggingface.co‘, port=443)

看我的回答&#xff1a; https://github.com/huggingface/transformers/issues/17611#issuecomment-1794486960 能问这个问题的都是网络不太好的&#xff0c;你懂的&#xff0c;所以答案全是解决网络的。 得益于这个回答&#xff1a;#17611 (comment) 看了一下代码&#xf…

基于ssm的校园快递物流管理系统(java+jsp+ssm+javabean+mysql+tomcat)

博主24h在线&#xff0c;想要源码文档部署视频直接私聊&#xff0c;9.9拿走&#xff01; 基于javawebmysql的ssm校园快递物流管理系统(javajspssmjavabeanmysqltomcat) 运行环境&#xff1a; Java≥8、MySQL≥5.7、Tomcat≥8 开发工具&#xff1a; eclipse/idea/myeclipse/s…