SVN 用户对 Git 的不好的体验,可能大多来自于两者命令集差异很大,不兼容,感觉非常不习惯。

这其中的一部分原因是因为 SVN 和 Git 的原理不同,分属不同阵营——集中式和分布式版本控制;另外一个重要的原因,可能就是 Linus Torvals 痛恨 CVS,而且 Torvals 曾经说过的很有争议话,就是他认为 SVN 也是一个失败。所以,Torvals 设计的 Git 当然要特立独行了。

不过…

由于原理不同,导致 SVN 和 Git 不兼容的命令

svn checkout 和 git clone

这两个命令,都是首次从其他版本库创建本地拷贝时运行的命令,都是只需要执行一次就可以的命令。

  • “svn checkout” 就是检出,很形象的比喻,subversion 就是要从服务器的版本库建立本地的工作拷贝(工作区)。检出之后的本地拷贝和版本库有着千丝万缕的联系(每个子目录下的 .svn 目录中的 entries 文件都会标记版本库的地址),本地提交都要上传到服务器版本库中完成。
  • “git clone”就是克隆,也是非常形象的比喻。作为分布式版本控制系统,通过克隆创建的本地版本库和远程版本库一模一样,没有谁比谁更好。克隆之后的本地版本库和源版本库有着一丝联系(在 .git/config 中配置 remote版本库的URL),这一丝联系,无非是为了不定期的双方分享改动而已。

svn update 和 git checkout, git pull

真的很难说和 “svn update” 对应的 git 命令,是 git checkout? 还是 git pull?

  • “svn update” 是从 subversion 版本库更新最新的提交到本地
  • “git pull” 是从源版本库拉数据到本地版本库,并和本地对应的分支进行合并。“pull”在这里非常形象,因为这个操作不会将本地版本库的改动传递到源版本库(远程版本库),只会将远程版本库最新的改动 fetch 过来,然后在合并。
  • “git checkout” 在某种意义上,也很像。例如像要将本地修改取消或者本地删除的文件还原,在 subversion 中就要用 svn up 命令,而在 git 中,当然用 “git checkout .” 命令了。

可以通过别名改进兼容性的 Git 命令

一个纯爷们说:

  • 这个可以有: git commit, 这个真没有: git ci
  • 这个可以有: git checkout, 这个真没有: git co
  • 这个可以有: git status, 这个真没有: git st
  • 这个可以有: git branch, 这个真没有: git br

如果 Git 真的那么不堪,我也就不再这里写博客,早就洗洗睡了。Git 可以用别名实现

$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit

::...

免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com



自怼圈/年番新

DU21.7
关于 ~ DebugUself with DAMA ;-)


关注公众号, 持续获得相关各种嗯哼:
zoomquiet


粤ICP备18025058号-1
公安备案号: 44049002000656 ...::