используя git reset на master, когда я сливаюсь туда и обратно с локальной веткой - PullRequest
1 голос
/ 14 марта 2012

Я делаю изменения в локальной ветке branch_a. Я думал, что эти изменения должны быть объединены с мастером, поэтому я слился с моим местным мастером. Затем я продолжил работать в branch_a, иногда извлекая в свой локальный мастер самые последние обновления из других ppl, а затем объединяя их в branch_a.

Теперь оказывается, что они не хотят этих изменений от branch_a в master. Как мне вернуть моего мастера обратно в исходное состояние пару месяцев назад (мой результат слияния с branch_a зафиксирован, но не передан). Я не могу выполнить сброс, могу ли я, потому что моя локальная ветвь branch_a зависит от слияния с master (хотя я хочу только изменения из удаленной master ветки, у меня не так много всего в моем локальном master - ничего, что я хочу сохранить в любом случае - это просто вещи после того, как я слил другую ветку, чтобы она работала хорошо). Могу ли я перебазировать branch_a, чтобы удалить зависимость от локальной ветки master, а затем выполнить сброс? Или я должен использовать возврат, чтобы история не удалялась? (По сути, я не хочу, чтобы мастер вмешивался в мои локальные слияния и мелкие исправления, которые я сделал после слияния).

1 Ответ

1 голос
/ 14 марта 2012

Вы можете сделать это различными способами.Конечно, вы можете сбросить вашу главную ветку.Чтобы избавиться от вашего слитого branch_a в master, вы могли бы:

git fetch origin
git checkout master
git reset --hard origin/master

Поскольку вы не перенесли свои слитые branch_a изменения, это сделает ваш мастер точкой текущего удаленного мастера, который будет лишен изменений из branch_a.

Теперь, если вы хотите сохранить branch_a, но без объединенных изменений из master, вы можете перебазировать эту ветку в интерактивном режиме и просто удалить коммиты слияния.

git checkout branch_a
git rebase -i HEAD~20 (assuming 20 commits back in history)

Это запустит редактор, где выможет делать разные вещи и будет выглядеть примерно так:

pick 23kasjd foo
pick sjd3456 goo

Просто удалите строки, которые являются коммитами слияния, поступающими от мастера, и сохраните.Перебазирование будет продолжено, и история branch_a будет переписана и пропущены эти фиксации из истории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...