Отменить последнюю фиксацию/слияние
Я немного перепутал мой 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^