Git中没有中心服务器,每个Git都是服务器,pull/push只是进行服务器之间的同步。
GIT管理的文件有四种状态:变更 -> 临时提交(该状态下,可直接撤销) -> 提交到本地(该状态下,可以用git reset重置) ->推送到服务器 (服务端状态,无法变更)
对于svn来说,文件只有两种状态:变更 ->推送到服务器。
那么,当服务端不可用时,git正常工作,svn就洗白了。
另外,git是基于内容的版本管理,所以分支和合并都非常容易;svn是基于文件的版本管理,相对来说切分支于合并,都非常麻烦。
另外:推荐一个git的客户端:SourceTree。
再另外,几个git的术语:
fetch:从远程服务器查看更新,不拉取
pull:从远程服务器拉取更新
commit:提交变更代码到本地
push:推送本地的commit到远程服务端
恩恩 加上1l跟你的 理解个差不多了 灰常感谢!
为什么我觉得你说的是反的呢。
git才是基于文件的版本管理吧,svn是基于内容的。
git每次commit保存的是文件快照,而svn每次保存的是文件的变化内容。
因此,在进行分支的切换的时候,svn是逐个的拉取文件的变化,慢慢累加起来。而git是直接取出指定commit的文件快照
推荐你看下git详解之一。这是一个系列文章的第一篇
@ChuckLu: 你的对的,Git 只关心文件数据的整体是否发生变化。
@zklve :给你造成了一定的误导。想更细致的了解git,可以参考:http://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-Git-%E5%9F%BA%E7%A1%80
好处
1.再也不怕合并代码的时候把自己没提交的代码弄丢了.
2.1还不够吗?