zoukankan      html  css  js  c++  java
  • Mercurial使用经验谈:Pull之后和Push之前该做什么?

    Mercurial作为分布式版本管理系统,速度快,使用方便。对比SVN,唯一更复杂的就是Pull/Push操作了。

    Pull的作用是从其他库获取新的改动。根据实际情况我可能会得到几种结果:

    • 如果我在本地库中没有做过提交,那么Pull的结果很直接,就是把新的改动添加到当前库的tip之后
    • 注意这时候我的本地代码文件并没有更新,只是本地库被更新了。还需要一个额外的Update操作。可以在TortoiseHg中设置Pull之后自动Update,效果就跟SVN是一样的了。
    • 如果我在本地库中提交过版本,那么Pull之后会出现匿名分支。简单地说,我的改动会自动成为一个新的分支。我的改动不会自动合并到当前的tip中,除非我做点什么。我有几个选择:
      • Merge。把我的改动和更新的改动合并,合并后两个匿名分支会变成一个。跟SVN类似,这个过程可能会产生冲突,需要手工处理。
      • Rebase。这个似乎是GIT首创的,Mercurial用插件实现,需要先行启用。Rebase把我的改动转接到更新版本的后面,相当于把我的分支嫁接到刚刚更新的主干上。Rebase的好处是不会有匿名分支,我很喜欢这样做。但要注意,如果我的改动已经同步到其他库了,就不要做Rebase,否则容易导致多个库之间的同步问题。
      • 如果我的代码还在修改中,暂时还不想合并,可以保持现状,继续提交到这个匿名分支。直到代码完成后,再Merge或者Rebase。

    Push的作用与Pull相反,把我的改动放到其他库中。Push之前应该先Pull,这样可以保证自己解决所有冲突之后,再把结果放到其他库。不要把麻烦留给别人!


    分布式版本管理带来优点的同时,也增加了一些操作上的负担,正确的理解和使用能让工作更愉悦!

  • 相关阅读:
    bcrypt加密算法原理和应用
    spring security 防止iframes攻击
    angularjs在eclipse下不要随意ctrl+shift+f缩进代码
    第五章 容器之元组
    第五章 容器之列表
    第四章 函数
    第3章 编程概论
    mysql排序分组
    数据表的基本操作
    数据库基本操作
  • 原文地址:https://www.cnblogs.com/tinyfish/p/1784721.html
Copyright © 2011-2022 走看看