У меня был процесс, на котором я работал бы на отдельных ветвях разработки, а затем, когда закончил, объединил их в «стабильную» ветвь. Затем я создавал новую ветку для следующей ветки развития, созданной из мастера. Это обеспечило бы, чтобы каждая ветвь развития всегда содержала самые последние стабильные изменения. Но я допустил ошибку. Я забыл объединить ветвь развития в мастер, но потом я создал новую ветку от мастера и много работал над ней. Таким образом, эта новая отрасль, которая имеет много изменений, не обновляется с последними стабильными изменениями.Объединить изменения из ветки в другую ветку без объединения ветви
Я пошел вперед и объединил предыдущую ветвь развития в мастерскую - ту, которую я забыл объединить. Теперь мне нужно объединить изменения с мастером в мою новейшую ветвь развития. Но я действительно не хочу объединить ведущую ветвь в ветку dev, используя всю свою историю. Я хочу, чтобы эти ветви оставались раздельными, я просто хочу сравнить различия между двумя ветвями и объединить соответствующий код от мастера в ветвь dev как один новый коммит. Я знаю, что будут конфликты. Как это можно сделать?
Если возможно, я бы предпочел сделать это визуально с помощью Source Control для XCode, чтобы сравнивать и выбирать изменения, но если не использовать Terminal, это просто отлично.
Это, по-видимому, мой сценарий. Я хотел бы отметить, что новая ветвь dev содержит много изменений, в том числе и нажатия на нее, что мастер не имеет. Я знаю, что будут конфликты слияния. Я бы не хотел, чтобы история отделения ветви была стерта, и история мастера, конечно. Если бы вы могли расширить свой последний абзац, я был бы признателен. В частности, я не уверен, что вы подразумеваете под воздействием силы, чтобы сохранить историю. – Joey
Вы не теряете историю, вы просто меняете ее.То есть, Git идентифицирует это как новую вещь, которая произошла, но это очень специфическая фиксация, которая была воспроизведена, чтобы появиться в определенном предковском порядке. – Makoto
Я пошел вперед с rebase. Я разрешил конфликты, запустил 'git rebase -continue', он применил мои коммиты, которые я сделал к ветви dev, а затем запустил« Revert »слияние« master »в dev-branch». Все хорошо смотрелись на Терминале, но, глядя на код, он не имел никакого значения - изменения от мастера не сливаются в dev-ветку. Нет никаких незафиксированных изменений. – Joey