请教如何做一个最基本的git或svn服务器

请教如何做一个最基本的git或svn服务器,第1张

在加入新东西之前,你也许会在同步主开发树的时候体验到一些问题。实际上,你在执行git-svn
rebase之前还必须提交所有的本地修改(使用git-commit命令)。
有时候这并不合理,因为你的更改也许还没有准备好提交(还没有完成、测试或者验证这写代码)。不过别担心,git对此也有一个官方的解决方案,只需下面的步骤:
先把你的改动保存起来,使用命令:git-stash
更新工作副本,使用命令:git-svn rebase,这跟平时一样
恢复保存起来的改动,使用命令:git-stash apply
清除“保存”,使用命令:git-stash
clear。第1步之后,所有未提交的改动在工作副本上都看不到了,因而你可以执行rebase命令,不会有任何问题。

对于小型的集中式的团队来说,SVN比Git好用,一般来说国内的小型团队用SVN足矣。
git的优势在于分布式的团队和开发任务。也就是说SVN把代码集中管理,服务器只有一个,你要参与开发,先把放在服务器上的源码checkout到本地,修改完了再提交给服务器。
而git没有这种限制,每个开发人员本地的代码库都可以当作是服务器,方便了来自世界各地的开发人员参与开发。著名的github代码托管站点就是基于git的。

分布式存储,也就是说你本地客户端仓库的代码跟服务器上的代码仓库是一样和对等的。

服务器崩溃了,机房起火被烧了,小伙子失恋一气之下删了服务器的代码,没关系,只要任何一个客户端电脑有一份,就可以了恢复!

SVN集中式代码仓库全球仅此一家,没了就比较麻烦

断网也可以工作。SVN切换分支、需要随时与服务器进行通信,拉取不同分支的代码到你本地电脑工作,断了网,就歇菜了,只能下班回家。git不一样,断网可以继续工作!等联网了在同步就可以了

git分支切换超快,不像SVN,切换一下分支,需要慢腾腾地跟服务器通信,重新拉取代码。

好用,纯命令行 *** 作,一开始上手有点难度,等用熟悉了,就会发现它的灵活和高效

1) 最核心的区别Git是分布式的,而Svn不是分布的。能理解这点,上手会很容易,声明一点Git并不是目前唯一的分布式版本控制系统,还有比如Mercurial等,所以说它们差不许多。话说回来Git跟Svn一样有自己的集中式版本库和Server端,但Git更倾向于分布式开发,因为每一个开发人员的电脑上都有一个Local Repository,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项 目分支等 *** 作,等网络再次连接上Push到Server端。
从上面看GIt真的很棒,但是GIt adds Complexity,刚开始使用会有些疑惑,因为需要建两个Repositories(Local Repositories & Remote Repositories),指令很多,除此之外你需要知道哪些指令在Local Repository,哪些指令在Remote Repository。
2)Git把内容按元数据方式存储,而SVN是按文件:因为,git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。git目录的体积大小跟svn比较,你会发现它们差距很大。
3) Git没有一个全局版本号,而SVN有:目前为止这是跟SVN相比Git缺少的最大的一个特征。
4) Git的内容的完整性要优于SVN: GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
5) Git下载下来后,在OffLine状态下可以看到所有的Log,SVN不可以。
6) 刚开始用时很狗血的一点,SVN必须先Update才能Commit,忘记了合并时就会出现一些错误,git还是比较少的出现这种情况。
7) 克隆一份全新的目录以同样拥有五个分支来说,SVN是同时复制5个版本的文件,也就是说重复五次同样的动作。而Git只是获取文件的每个版本的 元素,然后只载入主要的分支(master)在我的经验,克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件的 SVN,耗了将近一个小时!而Git只用了区区的1分钟!
8) 版本库(repository):SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。而 Git可以有无限个版本库。或者,更正确的说法,每一个Git都是一个版本库,区别是它们是否拥有活跃目录(Git Working Tree)。如果主要版本库(例如:置於GitHub的版本库)发生了什麼事,工作成员仍然可以在自己的本地版本库(local repository)提交,等待主要版本库恢复即可。工作成员也可以提交到其他的版本库!
9)分支(Branch)在SVN,分支是一个完整的目录。且这个目录拥有完整的实际文件。如果工作成员想要开启新的分支,那将会影响“全世界”!每个人都会拥有和你一样的分支。如果你的分支是用来进行破坏工作(安检测试),那将会像传染病一样,你改一个分支,还得让其他人重新切分支重新下载,十分狗血。而 Git,每个工作成员可以任意在自己的本地版本库开启无限个分支。举例:当我想尝试破坏自己的程序(安检测试),并且想保留这些被修改的文件供日后使用, 我可以开一个分支,做我喜欢的事。完全不需担心妨碍其他工作成员。只要我不合并及提交到主要版本库,没有一个工作成员会被影响。等到我不需要这个分支时, 我只要把它从我的本地版本库删除即可。无痛无痒。
Git的分支名是可以使用不同名字的。例如:我的本地分支名为OK,而在主要版本库的名字其实是master。
最值得一提,我可以在Git的任意一个提交点(commit point)开启分支!(其中一个方法是使用gitk –all 可观察整个提交记录,然后在任意点开启分支。)
10)提交(Commit)在SVN,当你提交你的完成品时,它将直接记录到中央版本库。当你发现你的完成品存在严重问题时,你已经无法阻止事情的发生了。如果网路中断,你根本没办法提交!而Git的提交完全属於本地版本库的活动。而你只需“推”(git push)到主要版本库即可。Git的“推”其实是在执行“同步”(Sync)。
最后总结一下:
SVN的特点是简单,只是需要一个放代码的地方时用是OK的。
Git的特点版本控制可以不依赖网络做任何事情,对分支和合并有更好的支持(当然这是开发者最关心的地方),不过想各位能更好使用它,需要花点时间尝试下。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13415133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-31
下一篇 2023-07-31

发表评论

登录后才能评论

评论列表(0条)

保存