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

一、导言

1、什么是svn?

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

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

1.1、svn的利 

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

1.2、svn的弊 

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

2、什么是Git? 

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

2.1、Git的利 

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

2.2、Git的弊 

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

3、区别 

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

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

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

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

 选择一个默认的编辑器,默认为Vim(Linux的),里面还有Notepad,我选择使用Vim

在Git创建分支后的默认的名字(master),如果没有特别的使用默认的设置,点击next即可默认推荐为第二个,不包含全部的工具。第三个是git 和 Unix全部工具开启https连接,保证数据传输数据的安全,按照默认的选择即可额外的配置选项,这里面默认都没有选,可以将这两个选框勾选上,支持(node、python)然后选择install启动git Bash 查看发行说明  可以不用选中win + R cmd 输入:git --version 查看版本 

或者在电脑的任意位置右键看见这两个就说明安装成功了

3、上传仓库 

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

  1. 上传完成

快速上传:

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

 4、仓库下载资源

拿到我们需要克隆的地址。创建一个新的文件夹用于克隆。

  1. 输入命令:git clone [url]:克隆远程仓库到本地。
  2. 克隆完成

三、git常用命令 

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

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

四、git常用命令理论 

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

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

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

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

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

相关文章

专题知识点-二叉树-(非常有意义的一篇文章)

这里写目录标题 二叉树的基础知识知识点一(二叉树性质 )树与二叉树的相互转换二叉树的遍历层次优先遍历树的深度和广度优先遍历中序线索二叉树二叉树相关遍历代码顺序存储和链式存储二叉树的遍历二叉树的相关例题左右两边表达式求值求树的深度找数找第k个数二叉树非递归遍历代码…

蒙特卡洛树搜索(Monte Carlo Tree Search)揭秘

一. 什么是蒙特卡洛树搜索 蒙特卡洛树搜索(MCTS)是一种启发式搜索算法,一般用在棋牌游戏中,如围棋、西洋棋、象棋、黑白棋、德州扑克等。MCTS与人工神经网络结合,可发挥巨大的作用,典型的例子是2016年的AlphaGo,以4:1…

Elasticsearch:ES|QL 快速入门

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新发行版为 Elastic Stack 8.11。 Elasticsearch 查询语言 (ES|QL) 提供了一种强…

快速构建高质量中文APP登录注册页面Figma源文件

在这个数字化时代,移动应用程序(APP)已经成为我们日常生活中不可或缺的一部分。如果您正在为您的中文APP开发登录注册页面,并寻找高质量的UI设计素材,那么您来对地方了!我们为您提供了一个完整的Figma源文件…

Seatunnel单机和集群部署说明

编译 编译命令 mvn clean package -pl seatunnel-dist -am -Dmaven.test.skiptrue 部署 将seatunnel-dist\target目录下的apache-seatunnel-2.3.3-SNAPSHOT-bin.tar.gz上传至服务器 解压安装包到/opt/soft/seatunnel目录下 配置环境变量 export SEATUNNEL_HOME/opt/soft/s…

nginx之使用与配置教程

目录 简介 优点 安装 目录结构 nginx.conf配置文件结构 server虚拟主机配置 listen server_name location root index try_files proxy_pass 使用 反向代理 配置语法 常用指令 proxy_pass proxy_set_header proxy_redirect 负载均衡 负载均衡策略 轮询&…

竞赛选题 深度学习的动物识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

Java入门篇 之 继承

本篇碎碎念:最近的课程遇到瓶颈了,看的时候感觉自己会了,但是结束仔细一回顾还是一知半解,一点一点来吧,基础必须要打好(自己给自己好的心里暗示,结局一定是好的) 今日份励志文案:慢慢改变,慢慢…

SELF-AUGMENTED MULTI-MODAL FEATURE EMBEDDING

two embeddings f o r g _{org} org​ and f a u g _{aug} aug​ are combined using a gating mechanism 作者未提供代码

实战Leetcode(五)

Practice makes perfect! 实战一: 思路:我们要用复制的节点来组成一个新的链表,而原链表的节点随机指向其中一个节点,我们首先给每一个节点都复制并且插入到原来节点的后面,然后用复制的节点指向我们原来节…

金财数科无代码开发平台:轻松实现电商、CRM、广告推广系统的集成连接

连接与集成:挖掘电商平台的潜力 金财数科是一家领先的信息技术公司,专注于利用前沿技术如互联网、人工智能、大数据和区块链等,为传统财税信息化方案和产品提供升级改造,并打造新一代智能财税SaaS平台。我们的目标是帮助企业通过…

电脑篇——本地串口转TCP,TCP转虚拟串口,网络调试助手,串口调试助手

TCP/UDP工具、串口工具 https://pan.baidu.com/s/1SY03d_RRVhyOZfsPlApmxg?pwd5555 今日有个需求,就是在本机电脑上接了一个串口设备,然后我的QtCreator是在内网远程电脑运行的,我想将串口设备“挂载”到远程电脑上去调试程序,于…

百望云携手华为发布金融信创与数电乐企联合方案 创新金融合规变革

10月27日,北京发布《关于开展全面数字化的电子发票试点工作的公告》,自2023年11月01日起开展数电票试点。千呼万唤始出来,拉开了北京地区企业开展数电票试点的序幕。 百望云作为数电票行业翘楚,电子发票服务平台供应商&#xff0c…

FiRa标准——MAC实现(二)

在IEEE 802.15.4z标准中,最关键的就是引入了STS(加扰时间戳序列),实现了安全测距,大大提高了测距应用的安全性能。在FiRa的实现中,其密钥派生功能是非常重要的一个部分,本文首先对FiRa MAC中加密…

Spring面试题:(七)Spring AOP思想及实现

AOP思想的概念 AOP的实现:动态代理技术 通过spring容器获取目标对象和增强对象,通过动态代理生产代理对象,在目标对象的目标方法执行增强方法,返回生成代理对象给spring容器,在获取bean时则获取代理对象。 JDK代理和…

postman设置动态token, 每次登录更新token

postman设置动态token, 每次登录更新token 文章目录 postman设置动态token, 每次登录更新token问题1. 设置全局变量2. 新建登录接口3. 设置脚本4. 切换环境5. 配置动态token 问题 token过期时间一般比较短, 每次使用postman调用接口都token非常麻烦 实现token过期后, 调用一次…

Axure原型设计工具怎么样?有替代软件吗?

Axurerp是一种快速原型设计工具,可以制作高度互动的HTML原型。设计师不仅可以使用Axure绘制线框图和原型,还可以在Axurerp中完成一系列用户体验设计。在本文中,我们将根据用户体验设计师的真实经验,触发用户体验设计师的实际工作&…

【rl-agents代码学习】02——DQN算法

文章目录 Highway-env Intersectionrl-agents之DQN*Implemented variants*:*References*:Query agent for actions sequence探索策略神经网络实现小结1 Record the experienceReplaybuffercompute_bellman_residualstep_optimizerupdate_target_network小结2 exploration_polic…

线性代数(四)| 解方程 齐次性 非齐次性 扩充问题

文章目录 1 方程解的个数2 解方程步骤2.1 齐次性方程组2.2 非齐次方程组 3 一些扩充问题 系数矩阵 增广矩阵 A m n X B A_{mn}XB Amn​XB 1 方程解的个数 m 代表有m个方程 n代表有n个未知数 系数矩阵的秩与增广矩阵的秩不同 无解 若相同 ,如系数矩阵的秩和未知…