浅谈Git与SVN的使用感受

git,感觉比svn更好用些 git工具,感觉比svn好用些,随便分享下,有用的取下, 立即下载

作为版本控制工作,两者的做大的区别应该在于:Git属于分布式版本控制工具,而SVN属于集中式的版本控制工具。分布式的好处是什么呢?举个例子来说,当你在火车上离线状态下编程工作,在某个阶段会需要先保存正确的代码状态(以便后续出问题时可以回滚),再开始后续的编码,这个时候Git就会发挥它的优势。因为它的分布式特性,可以同时拥有远程仓库和本地仓库,在火车上,即使不联网,也可以将程序的修改commit至本地的仓库,在联网的条件下再push到远程仓库中。而SVN因为是集中式的控制管理,所以它的每一次commit都需要联网提交至服务器端。
除了上面的描述的优势,git还有其他让人喜欢的特点:

  1. git只在仓库(repo)的根目录下创建.git文件夹,而svn会在每个目录下创建.svn文件夹(会产生更大的记录内容)
  2. 当你删除或是移动仓库内的某个文件时,git会帮你识别出具体的操作,而svn需要人为的指出
  3. 程序在编译过程产生的文件,如.pyc,如果不想提交至仓库,git可以在根目录下指定,从而运用到子目录,而svn就不容易做到这一点

现在越来越多的人使用git,它的风头也渐渐盖过了svn,而当我在某游戏公司实习时,却意外发现了svn的优势。前面讲到,git是一种分布式的版本控制工具,支持远程仓库和本地仓库,因此也就增加了使用的复杂性。与远程交互用push/pull,与本地交互用commit/checkout,而且它也缺乏好用的客户端。我们的游戏开发,需要策划、程序员、美术协同工作,虽然程序员接受git的使用相对简单,但是要给策划、美术做培训需要时间、人力的成本,svn以它简单操作的优势,在公司内部盛行。而且,它有一个很好用的客户端:TortoiseSVN

git和svn的混用 服务器上的项目是使用svn进行管理的。本来本地的项目也是通过svn进行管理的,但是后来使用svn的分支功能进行项目的测试/新功能等等时,总是会出现各种各样的问题,遂转投git。因为git的分支机制和svn的分支机制不一样,git的更加灵活,强大和稳定。首先建立一个本地化的git仓库(可以直接选择项目所在文件夹)将服务器上的项目checkout到创建的git仓库里面,此时soureTree里该项目的状态就发生了变化然后会发现有许多与svn相关的东西,需要忽略追踪。(*.svn)此时需要常规的操作将项目加入到git中(暂存,提交)。第一次填写提交信息时会提示填写用户名和邮箱(这些是可以随便填写的, 立即下载

相关推荐

实例讲解Simulink CAN通讯丢失故障判定模型搭建及仿真测试验证方法

本文通过ABS通讯丢失故障触发、判定条件Simulink模型的搭建和仿真的讲解,介绍了一种控制器CAN通讯丢失故障判定的方法和建模方法,希望能给相关技术人员带来一定参考和帮助。

qq_43011586的博客 3685

同时使用SVN和Git进行版本控制

同时使用SVN和Git进行版本控制 相信很多小伙伴都要类似的困扰: 公司的项目因为是老项目或者习惯问题使用的是SVN, 但是因为项目太大或者不能频繁的提交或者需要离线使用或者使用不习惯或者其他等等因素, 个人需要使用Git来管理项目. 如何才能比较完美的达到我们的目的呢? 今天作者就给大家介绍下两个经过实践的方案, 如果大家有更好的方案, 也希望不吝赐教. SVN和Git 两个版本控制软件的优缺点对比不是我们今天的重点. 本篇文章的重点在介绍这种特定的应用场景, 至于两种软件的各种对比和介绍, 在网上已经有

木头圈 1万+

Python环境搭建和LabVIEW中的调用

本文主要介绍Python相关的环境搭建、Anaconda的使用以及在LabVIEW中调用Python的方法。

lvxisi的博客 6390

git svn混用

git svn混用

liulangshusheng2012的专栏 1378

解决Windows 10更新失败错误代码0x80070643

在Windows 10操作系统的更新过程中,用户时常会遇到各类错误代码,这些代码通常成为顺利完成更新的绊脚石。其中,错误代码0x80070643是一个较为常见的更新失败提示,它可能导致系统更新停滞不前。面对这一挑战,本文将详细介绍如何有效解决这一错误,帮助用户顺利完成Windows 10的更新。

nntxthml的博客 1827

无人机导航中的坐标系统详解与转换实现

本文系统介绍了无人机导航中常用的坐标系及其转换方法。主要内容包括:1) 四种关键坐标系(大地坐标系ECEF、经纬度LLA、北东天坐标系NED、机体坐标系)的定义和特点;2) 坐标系间的转换原理与实现,重点讲解LLA与ECEF的互转公式及ECEF与NED的转换方法;3) 提供可直接使用的C++实现代码,包括基于WGS84椭球模型的精确转换算法。这些内容为无人机导航系统开发提供了实用的坐标系处理方案,能够有效解决多源数据在不同坐标系下的统一表示问题。

电脑管家 377

SVN的介绍与配置

SVN的介绍与配置1. SVN简介2. SVN工作机制3. SVN优势4. 安装SVN5. 测试结果 1. SVN简介 SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。 SVN的全称式Subversion,即版本控制系统。它是最流行的一个开放源代码的版本控制系统。作为一个开源的版本控制系统,Subversion管理随着时间改变的数据。这些数据放置在一个中央资料档案库中。这个档案库

此后如竟没有炬火,我便是唯一的光。 1629

Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)

本文介绍了如何基于Spring Boot 3.2、Spring AI 1.0.0-M4、DeepSeek API和Redis构建具备上下文记忆功能的智能聊天应用。项目采用现代化技术栈,包括Java 17、Maven、Lombok等,实现了智能对话、会话管理、异常处理等核心功能。文章详细讲解了环境搭建、配置管理(含Redis和AI服务集成)、核心组件设计(如消息实体、控制器和服务层实现),以及完整的项目结构。该项目提供了美观的Web界面和REST API,支持对话上下文存储(通过Redis实现)和系统监控,可

博客 829

版本管理工具:Git VS SVN,你会怎么选?

前一段时间分享了关于`Git`工具的使用。因为笔者一直用的是`SVN`,所以本章对比一下`Git`和`SVN`都有哪些异同点。选择的版本管理工具的时候应该怎么选?

static_coder的博客 2393

【25届数字IC秋招总结】面试经验10——紫光同芯

25届数字ic面试记录——紫光同芯

lalala0635的博客 862

按照CANoe模板制作seed&&key.dll

在canoe进行诊断测试的时候,在0x27服务中需要制作一个dll文件。可在canoe的诊断中进行加载,也可用于diva的自动化测试。 本文按照canoe提供的KeyGenDll_GenerateKeyEx模板制作。 KEYGENALGO_API VKeyGenResultEx GenerateKeyEx( const unsigned char* iSeedArray, /* Array for the seed [in] */ unsigned int

天赐好车的博客 6520

浅谈为什么Git没有取代SVN

在做开发的过程中,发现Git对于代码的版本控制和管理也是挺好用的,但是为什么还有很多软件公司一直在用svn呢?本人做了一下简单的分析: 1.一般的非纯技术开发公司更倾向于svn; 2.公司一直使用svn,所以公司的项目团队和员工也需要使用; 3.svn的安全控制和权限管理相较于Git更好。git 下,如果一个人clone以后,所有代码和历史都泄漏了。而 svn 有细致的按

独家记忆-涂仕明的专栏 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

php会用到Git吗,浅谈我的PHP开发之路—使用git管理自己的代码

在开发的道路上,就始终无法避开版本控制,哪怕你是独自一人进行开发,版本控制也是有必要的,从最早开始使用CVS,到后来使用SVN,再到git,最后又回到了SVN,但是不知道为什么真的对SVN很无爱。现在工作的地方,使用的是SVN,我每天都得把自己修改过的文件单独的提出来,然后以相同的目录路径打包好,然后提交到测试版本库目录下,然后再交由其他人用ftp对服务器上的文件进行覆盖然而每天这样创建对应的目录...

weixin_30775883的博客 226

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

初学者的Git浅谈

花了两天时间粗略看了一下git,虽然并没有学得深入,但是想在此以一个初学者的角度对这两天git的学习进行总结。之前一直在用svn,但是想到github这样的社区仅仅支持git,就想来感受一下git的魅力。一、git相对于svn的优势 svn必须连网才能将代码提交到仓库,git每一台电脑都有一个本地仓库,无需连网,随时提交,需要的时候再将本地的修改推送到给远程仓库(实际上很多时候git也是有中央代码仓

panyyer 368

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

浅谈我的编程之路——感谢引领我的leader

  在开发的道路上,就始终无法避开版本控制,哪怕你是独自一人进行开发,版本控制也是有必要的,从最早开始使用CVS,到后来使用SVN,再到git,最后又回到了SVN,但是不知道为什么真的对SVN很无爱。   现在工作的地方,使用的是SVN,我每天都得把自己修改过的文件单独的提出来,然后以相同的目录路径打包好,然后提交到测试版本库目录下,然后再交由其他人用ftp对服务器上的文件进行覆盖 然而每天这...

weixin_30901729的博客 83

版本管理和项目管理软件浅谈

版本管理和项目管理软件浅谈 项目管理软件 Trac vs Redmine   关于Trac,之前想为计组实验平台搭建Wiki的时候作为“备胎”所了解过,而与当时功能与其相似,看起来更有竞争力的产品——Redmine相比而言我更加看好Trac,因为Redmine有一些严重的缺点: 安装非常麻烦。在实际的生产环境中,Redmine在Debian\Ubuntu系统下没法稳...

weixin_30852419的博客 128

Git | Git入门,成为项目管理大师(一)

大家好,周一我们迎来了一个新的专题——git。 写这个专题的初衷有两点,第一点是觉得好像很少有公众号提到git相关的技术,可能是觉得太基础了看不上。但实际上git非常重要,在我们实际的开发工作当中使用的频率也非常非常高。第二点是不少人git用的并不好,连同之前的我在内。而且用得不好也就算了,还意识不到它的重要性,所以就身体力行给大家开了这个专题,表达我的态度——git非常重要,不可以轻视。 Git历史 首先提一下git的来源,git的作者是大名鼎鼎的Linus。有可能你没有听说过它,但是你一定听说过他的作品

TechFlow的博客 341

浅谈作为一名软件开发,应该学什么、怎么学、怎样更好的提高自己?

作为一名软件开发,自己的感觉就是需要学的东西挺多的。工作中,会用到很多的技术,有些技术,可能看几篇技术博客之类的,就可以学会基本运用,学起来当然就需要更多的时间了。本人两年多Java开发经验,浅谈一下自己的学习感受吧,如果有不正确的地方,欢迎大佬指出。 可能很多小伙伴工作中都会有这样的困惑,一个方面就是技术多,不知道 ...

qq_36833673的博客 2553

Python提升测试效率大法 实战测试方法和技巧 常见测试工具如:Fiddler、Charles、Jmeter、PostMan、Mysql、Git等常用工具如何关联再次升华得到提升? 想法讨论

Python提升测试效率大法 实战测试方法和技巧 常见测试工具如:Fiddler、Charles、Jmeter、PostMan、Mysql、Git等常用工具如何关联再次升华得到提升? 想法讨论 狭义的理解常规的测试可分为:服务端测试、前端测试,大多数初级选手了解和使用的工具都是围绕常规测试开展,至于标题提及的工具只是为了更好辅助完成测试工作而掌握。 手工点点点早已落伍效率和大多数一学就会,那就玩点花的秀一下Python组合拳法,然后再然后呢? 本人主要简介Pytho

Benjamin 优快云博客 4226

游戏创业团队应该选择Git还是Svn

在开发过程中遇到问题,我都会做一些思考,总结一下,作为研发团队在项目研发前就要确定好管理工具,游戏研发团队核心:程序,美术,策划。公司为了项目管理方便,一般会选择Git或者SVN,下面我们就分析一下项目开发该选择那款项目管理工具,先说Git。 Git 选择Git,Git它的优势非常明显,如下所示: 1、分布式管理,非常强大的分支管理功能,分支功能对于开发者来说非常方便,每个人可以开一个分支,开发好...

海洋个人博客 4985

一文详解:Git与SVN的对比与选择

分布式版本控制和集中式版本控制是两种不同的版本控制系统架构。Git分布式版本控制系统,每个开发者都可以在本地完整地复制整个代码仓库,并且可以独立地进行开发和版本控制。每个开发者的本地仓库都包含完整的项目历史和版本信息,因此可以在本地进行提交、分支、合并等操作,而不需要依赖中央服务器。这种架构使得分布式版本控制系统更适合分布式团队和开发模式,也更容易支持并行开发和灵活的分支管理。SVN。

贝格前端工场的博客 8958

SVN与Git比较

SVN与Git比较<br />摘要<br />Svn是目前得到大多数人认可,使用得最多的版本控制管理工具,而Git的优势在于易于本地增加分支和分布式的特性,可离线提交,解决了异地团队协同开发等svn不能解决的问题。本文就这两种版本控制工具的异同点作详细介绍。<br />目录<br />摘要: 1<br />一、 集中式 vs 分布式 2<br />1. Subversion属于集中式的版本控制系统 2<br />2. Git属于分布式的版本控制系统 4<br />二、 版本库与工作区 6<br />1. S

yihui8的专栏 7万+
上一篇: Java Exception和Error的区别
Hooting
博客等级 码龄17年 11粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值