Отменить последнюю фиксацию/слияние

Я немного перепутал мой git репо. Я работал над функцией в отдельной ветке. Закончив работу, я переключился на мастера, чтобы объединить его, но мой партнер нажал несколько файлов, которые вступили в конфликт с моей. После слияния, конфликта и нажатия новых изменений я увидел, что я совершил более старые изменения моего партнера.

Теперь я хочу переделать это commit/merge. Я пытался git reset --soft HEAD^, но когда я хотел нажать, я получил это сообщение об ошибке Merge the remote changes before pushing again.

Кто-нибудь может мне помочь?

Ответы

Ответ 1

Ваш филиал функций по-прежнему укажет на вашу работу. Вы не потеряете эти изменения.

Как сказано в плеерах, вы можете reset вернуть обратно

git reset --hard HEAD^

Если вы хотите захватить некоторые конкретные файлы из своей ветки без слияния, вы можете проверить их:

git checkout yourbranch -- file1 file2 etc

Если вам нужны файлы от мастера до слияния, вы также можете проверить их:

git checkout master^ -- file3 file4 etc

Это не идеально, но это то, что нужно иногда. Слияние/может/означает, что вы отклоняете некоторые изменения с обеих сторон в слиянии. Лучший способ достичь правильного слияния - это:

git merge --no-commit yourbranch

от мастера, затем запустите команды git checkout сверху и, наконец, выполните:

git add . -A
git commit

При нажатии этой ветки теперь вам нужно добавить опцию force

git push --force

или

git push -f

Надеюсь, что это поможет.

Ответ 2

Проблема заключается в том, что вы хотите отменить изменения, которые уже были перенесены в центральный репозиторий. Если бы вы не подтолкнули их в первую очередь, git reset --hard/- soft/- mixed HEAD ^ сделал бы трюк.

Итак, когда вы сбросили HEAD git, вы жалуетесь, когда пытаетесь нажать на начало координат и обновите удаленный реф, который не является предком для вашего HEAD. Использовать -force:

git push --force origin master

Ответ 3

Хе-хе, ты почти понял это:

git reset --hard HEAD^