2017-01-30 17 views
0

Еще один пользователь git, смущенный Mercurial ветвями здесь. Я сделал что-то, что я не могу понять, как отменить, и в результате я не могу подтолкнуть свои совершенно несвязанные изменения. Любая помощь будет оценена по достоинству.Mercurial: как игнорировать несколько головок ветви при использовании в качестве предка на закрытой ветке.

Вот история, я думаю:

  • Я начал работать над чем-то по умолчанию . Я понял, что это была ошибка, так как это станет PR, поэтому следующий коммит я сделал на ветке feature1. Затем я отправил PR на битбакет.

  • Я начал работать над чем-то еще, также прочь по умолчанию, на этот раз я был уверен, использовать филиал feature2, и я нарочно «¯hG до -r ...» с номером ревизии до my feature1 обязуйтесь не включать это изменение.

На данный момент история выглядит примерно так,

    -- G (default) - H (feature1) 
       /
.. D - F (default) 
        \ 
        -- I - J - K (feature2) 
  • Мой PR не было принято, поэтому я закрыть feature1.

  • В родительском репозитории существовала разработка по умолчанию, поэтому я hg pull. Теперь это выглядит примерно так,

        -- G (default) - H (feature1) [my repository, closed] 
           /
    .. D - F (default)--- L (default) [parent repository] 
            \ 
            -- I - J - K (feature2) [my repository] 
    

.. плюс много изменений на другие отрасли, что я ничего не знаю.

  • Но я доволен feature2 и я хочу сделать PR для него, так что я стараюсь hg push --new-branch, но я получаю сообщение,

    прерывания: нажатие создает новый удаленный головной 7a341084eb8a !

Хорошо, таким образом использовать hg glog и кажется, что контрольная сумма соответствует родительской работы, т.е. L в приведенной выше схеме. Mercurial, похоже, жалуется, что у меня есть фиксация на закрытой ветке с веткой default, которая не была объединена с default! Но я больше не хочу, чтобы он существовал! Тем не менее, я не хочу снимать его, как тогда это сделало бы чтение старого закрытого PR невозможным.

Если я пытаюсь нажать только свою собственную ветку, hg push --new-branch -b feature2, то я получаю:

abort: push creates new remote head 062efd5d0886! 

то есть, та же проблема, но с другой головой. Кажется, что это соответствует первому плану feature2! То есть, I в моей диаграмме.

Это не имеет смысла ..a закрыт ветвь останавливает меня от нажатия изменений на совершенно другой ветке. Между тем я не могу понять, о чем говорят несколько головок, когда он нажимает на мою feature2, так как есть действительно только один feature2. Рекомендация заключается в том, чтобы «слиться» перед нажатием, но я не могу даже вычислить здесь , что сливаться. Я не хочу, чтобы объединить мои отвергнут изменения по умолчанию , и когда я hg merge default на feature2, думая, может быть, мне нужно принять во внимание последние изменения вверх по течению, это сливается G, с моей закрытой ветви вместо верхняя головка.

Итак, ясно, что я просто не понимаю Меркурийские ветви. В git я просто удалю feature1 ветку, и это было бы так. Как это разрешить?

ответ

0

Но я доволен feature2, и я хочу сделать PR для него, так что я стараюсь ¯hG толкать --Новогоднюю-ветвь, но я получаю сообщение,

abort: push creates new remote head 7a341084eb8a! 

На данный момент revision L является руководителем филиала default, и вы пытаетесь отправить revision G. Версия G находится в ветке default, поэтому вы создадите другую головку. Филиал feature1 был закрыт, но не филиал default в revision G. Вы можете обновить доrevision G и закрыть ветку или слить с revision L.

Если я пытаюсь нажать только свою собственную ветку, ¯hG толкать --Новогодние ветви -b feature2, тогда я получаю:

abort: push creates new remote head 062efd5d0886! 

Если revision I находится в default ветви, вы имеют ту же проблему, что и выше.

Если нет, попробуйте hg push -r <rev number of revision I>.