Я разработал проект на github, создал новую ветку и внес некоторые изменения (коммиты B, C и D), поэтому у меня было следующее дерево:
... <-- A (master)
\
B <-- C <-- D (branch2)
Я ошибочно слил и удалил branch2
, так что теперь у меня есть это дерево:
... <-- A <-- B <-- C <-- D (master)
Однако я понял, что хочу сохранить ветку master, которая отражает изменения в восходящем потоке, и создал myproject-master для моей работы над этим. Я переместил свои коммиты, переместив их в эту новую ветку. После ребазинга я удалил часть <-- B <-- C <-- D
из истории на мастере с помощью git reset --hard "A"
. Я также получил квадраты C
и D
и теперь буду называть этот коммит CD
. Моя проблема в том, что я не могу перенести свои изменения на master, и у меня есть разные деревья в локальной и удаленной среде:
Это локальное дерево (что я хочу иметь с обеих сторон):
... <-- A (master)
\
B <-- CD (myproject-master)
Это удаленное дерево:
... <-- A <-- B <-- C <-- D (master)
\
B <-- CD (myproject-master)
Когда я пытаюсь нажать на master, git отклоняет push, чтобы я не потерял данные. Это нормально, но у меня уже есть эти коммиты в другой ветке, и я хотел бы очистить их от мастера. Как я могу это сделать?