Mercurial 乌龟:只拉选定的变更集?

Mercurial 乌龟:只拉选定的变更集?,mercurial,tortoisehg,Mercurial,Tortoisehg,我有2个存储库A和B。我对A做了5次更改,但其中只有2次也应该出现在B中。因此,我尝试了以下内容: 将5项变更推送到回购A 将回购B的路径更改为回购A的路径 单击repo B的“检查传入变更集”按钮 现在我看到了我为回购协议A所做的5项更改。这就是我被卡住的地方,我现在怎么能只得到5项更改中的2项呢?我尝试了“拉到这里”,但这在我的情况下不起作用,它会得到我选择的更改集下面的所有更改集 例如,如何从列表中获取第一个和第三个变更集?有可能吗 谢谢!:) 在存储库之间拉取变更集时,不能跳过中间的变更

我有2个存储库A和B。我对A做了5次更改,但其中只有2次也应该出现在B中。因此,我尝试了以下内容:

  • 将5项变更推送到回购A
  • 将回购B的路径更改为回购A的路径
  • 单击repo B的“检查传入变更集”按钮
  • 现在我看到了我为回购协议A所做的5项更改。这就是我被卡住的地方,我现在怎么能只得到5项更改中的2项呢?我尝试了“拉到这里”,但这在我的情况下不起作用,它会得到我选择的更改集下面的所有更改集

    例如,如何从列表中获取第一个和第三个变更集?有可能吗


    谢谢!:)

    在存储库之间拉取变更集时,不能跳过中间的变更集。如果一个变更集在两个存储库中具有不同的父级,则它不是同一个变更集


    您可以通过导出所需的变更集,然后将其导入到另一个存储库来完成所需的工作。这样,您就可以从B中的repo A中获得所需的更改,但更改集在两个存储库中不会具有相同的更改

    在存储库之间拉取变更集时,不能跳过中间的变更集。如果一个变更集在两个存储库中具有不同的父级,则它不是同一个变更集


    您可以通过导出所需的变更集,然后将其导入到另一个存储库来完成所需的工作。这样,您就可以从B中的repo A中获得所需的更改,但更改集在两个存储库中不会具有相同的更改

    听起来A和B是同一个存储库的克隆。如果是这样,分支可能就是您所需要的。如果您有
    a
    包含以下内容的历史记录:

    C:\example>hg glog --template "rev{rev}:{desc}\r\n"
    @  rev6:change7
    |
    o  rev5:change6
    |
    o  rev4:change5
    |
    o  rev3:change4
    |
    o  rev2:change3
    |
    o  rev1:change2
    |
    o  rev0:change1
    
    如果您的
    B
    最初只是
    rev0
    rev1
    ,并且您想要添加
    rev3
    rev5
    ,您可以更新到
    rev1
    并将
    rev3
    rev5
    移植到它上:

    C:\example>hg update 1
    0 files updated, 0 files merged, 5 files removed, 0 files unresolved
    
    C:\example>hg glog --template "rev{rev}:{desc}\r\n"
    o  rev6:change7
    |
    o  rev5:change6
    |
    o  rev4:change5
    |
    o  rev3:change4
    |
    o  rev2:change3
    |
    @  rev1:change2
    |
    o  rev0:change1
    
    C:\example>hg graft 3 5
    grafting revision 3
    grafting revision 5
    
    C:\example>hg glog --template "rev{rev}:{desc}\r\n"
    
    @  rev8:change6      <--- contains change 1, 2, 4, 6
    |
    o  rev7:change4
    |
    | o  rev6:change7    <--- contains changes 1-7.
    | |
    | o  rev5:change6
    | |
    | o  rev4:change5
    | |
    | o  rev3:change4
    | |
    | o  rev2:change3
    |/
    o  rev1:change2
    |
    o  rev0:change1
    

    听起来A和B是同一个存储库的克隆。如果是这样,分支可能就是您所需要的。如果您有
    a
    包含以下内容的历史记录:

    C:\example>hg glog --template "rev{rev}:{desc}\r\n"
    @  rev6:change7
    |
    o  rev5:change6
    |
    o  rev4:change5
    |
    o  rev3:change4
    |
    o  rev2:change3
    |
    o  rev1:change2
    |
    o  rev0:change1
    
    如果您的
    B
    最初只是
    rev0
    rev1
    ,并且您想要添加
    rev3
    rev5
    ,您可以更新到
    rev1
    并将
    rev3
    rev5
    移植到它上:

    C:\example>hg update 1
    0 files updated, 0 files merged, 5 files removed, 0 files unresolved
    
    C:\example>hg glog --template "rev{rev}:{desc}\r\n"
    o  rev6:change7
    |
    o  rev5:change6
    |
    o  rev4:change5
    |
    o  rev3:change4
    |
    o  rev2:change3
    |
    @  rev1:change2
    |
    o  rev0:change1
    
    C:\example>hg graft 3 5
    grafting revision 3
    grafting revision 5
    
    C:\example>hg glog --template "rev{rev}:{desc}\r\n"
    
    @  rev8:change6      <--- contains change 1, 2, 4, 6
    |
    o  rev7:change4
    |
    | o  rev6:change7    <--- contains changes 1-7.
    | |
    | o  rev5:change6
    | |
    | o  rev4:change5
    | |
    | o  rev3:change4
    | |
    | o  rev2:change3
    |/
    o  rev1:change2
    |
    o  rev0:change1
    

    移植扩展可以帮助做到这一点。@SteveKaye
    transport
    在同一存储库中的分支之间移动变更集,而不是在两个不同的分支之间移动变更集。不,这是不正确的。内置的
    graft
    命令可以做到这一点,扩展可以在存储库之间移动它们,但没有
    graft
    更智能的合并功能。移植扩展可以帮助做到这一点。@SteveKaye
    transport
    在同一存储库中的分支之间移动变更集,而不是在两个不同的分支之间移动变更集。不,这是不对的。内置的
    graft
    命令可以做到这一点,扩展可以在存储库之间移动它们,但没有
    graft
    更智能的合并功能。