美文网首页
Git和SVN(Subversion)的命令的对比

Git和SVN(Subversion)的命令的对比

作者: 科研者 | 来源:发表于2020-02-20 13:52 被阅读0次

    对于用过 Git 和 Subversion 的人绝大多数都会对比这两者的命令;从 Subversion 切换到 Git 的用户 通常会经常纠结为什么 Git 的 clone 命令 不叫 checkout,为什么 commit 命令不会推送到远程仓库;反之,从 Git 切换到 Subversion 的用户也会有类似的纠结;对于在 Git 和 Subversion 频繁切换的用户,如果不理解其中的原因,还会导致经常混淆;本文就对比下 Git 和 Subversion 的命令和操作流程,并解释下这些命令的本质,以及这些命令看起来不同实则相同的原因;

    对于用过 Git 和 Subversion 的人绝大多数都会类比这两者的命令;

    先来看下 Git 和 Subversion 命令操作的时序图:

    Git操作时序图:


    Git操作时序图

    Subversion操作时序图:


    Subversion操作时序图

    从操作时序图上来看,绝大多数人可能感觉:

    1. Subversion 的 checkout 命令的作用 相当 Git 的 clone 命令的作用;
    2. Subversion 的 commit 命令的作用 相当 Git 的 push 命令的作用;
    3. Subversion 的 update 命令的作用 相当 Git 的 pull 命令的作用;

    其中第3点我不反对,但对于 第1点 和 第2点的认识说明了一个问题:

    1. 还没明白 checkout 和 commit 命令的本质操作;
    2. 还没明白 Subversion 和 Git 的最大区别————集中式版本控制系统 与 分布式版本控制系统区别;
      • Subversion是集中式版本控制系统:


        集中式
      • Git是分布式版本控制系统:


        分布式

    如果不明白这些问题,对于从 Subversion 切换到 Git 的用户会经纠结;

    其实 checkout 和 commit 命令 在 Git 和 Subversion 中的本质操作都是一样的:

    checkout命令的本质操作:
    checkout 命令的本质操作是将版本库中的目录树取出并放到工作区中;

    在 Git 中,由于 Git 是分布式版本控制系统,版本库在本地,所以 checkout 时不需要从远程仓库拿,只需要从本地仓库中取出目录树即可;

    而 Subversion 是集中式版本控制系统,版本库在远程服务器上,所以 checkout 时需要从远程仓库来取出目录树;这也是用 checkout 命令从远程仓库拉取项目的原因;

    commit命令的本质操作:
    commit命令的本质操作是将暂存区中的变更纳入到版本库中;

    由于 Git 是分布式版本控制系统,版本库在本地,所以 commit 时不需要将变更数据发送到远程仓库,只将变更添加到本地仓库中即可;

    而 Subversion 是集中式版本控制系统,版本库在远程服务器上,所以 commit 时需要将变更数据发送到远程仓库服务器,由远程仓库服务器创建新的版本节点;这也是用 commit 命令可以将数据同步到远程仓库的原因;

    相关文章

    相关文章

      网友评论

          本文标题:Git和SVN(Subversion)的命令的对比

          本文链接:https://www.haomeiwen.com/subject/xzlxqhtx.html