美文网首页用程序员思维思考
程序员思想——版本控制,常见面试题和知识点

程序员思想——版本控制,常见面试题和知识点

作者: alcohol和cat | 来源:发表于2019-08-10 20:26 被阅读0次

    面试当中的git和SVN的内容:

    git是分布式版本控制系统,SVN是集中式版本控制系统。

    问题1:reset 与 rebase, pull 与 fetch 的区别

    git reset 不修改commit相关的东西,只会去修改.git目录下的东西。

    git rebase 会试图修改你已经commit的东西,比如覆盖commit的历史等,但是不能使用rebase来修改已经push过的内容,容易出现兼容性问题。rebase还可以来解决内容的冲突,解决两个人修改了同一份内容,然后失败的问题。

    git pull pull=fetch+merge,

    使用git fetch是取回远端更新,不会对本地执行merge操作,不会去动你的本地的内容。

    而是用git pull会更新你本地代码到服务器上对应分支的最新版本

    问题2:git merge和git rebase的区别

    git merge把本地代码和已经取得的远程仓库代码合并。

    git rebase是复位基底的意思,gitmerge会生成一个新的节点,之前的提交会分开显示,而rebase操作不会生成新的操作,将两个分支融合成一个线性的提交。

    问题3:git和SVN的优缺点。

    1.SVN优缺点

    优点:

    1、 管理方便,逻辑明确,符合一般人思维习惯。

    2、 易于管理,集中式服务器更能保证安全性。

    3、 代码一致性非常高。

    4、 适合开发人数不多的项目开发。

    缺点:

    1、 服务器压力太大,数据库容量暴增。

    2、 如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。

    3、 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。

    2.Git优缺点

    优点:

    适合分布式开发,强调个体。

    公共服务器压力和数据量都不会太大。

    速度快、灵活。

    任意两个开发者之间可以很容易的解决冲突。

    离线工作。

    缺点:

    1、学习周期相对而言比较长。

    2、不符合常规思维。

    3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

    4.git如何解决代码冲突

    git stash

    git pull

    git stash pop

    这个操作就是把自己修改的代码隐藏,然后把远程仓库的代码拉下来,然后把自己隐藏的修改的代码释放出来,让git自动合并。

    如果要代码库的文件完全覆盖本地版本。

    git reset –hard

    git pull

    关注公众号 程序员九点  获得学习资料和更多技术分享

    相关文章

      网友评论

        本文标题:程序员思想——版本控制,常见面试题和知识点

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