Я работаю над проектом, использующим Git в качестве VCS. Я получил ветку xyz
от основной ветки мастера. Поработав некоторое время, я зафиксировал свой код и воспользовался основной веткой.
Тяга была в порядке. Затем я объединил код с мастером. После слияния в некоторых файлах возникли проблемы. Я не фиксировал код после слияния. Может ли кто-нибудь рассказать, как я могу прервать это слияние и привести мою ветку, в которой я работаю в настоящее время, в состояние, в котором она была до того, как я ее слил?
revert
это имя команды, которая создает новую фиксацию, отменяя изменения в предыдущей фиксации, так что, вероятно, это не то слово, которое вы здесь ищете. Я отредактировал ваш вопрос, чтобы уточнить.Ответы:
пока вы не зафиксировали, вы можете ввести
как и предполагалось в командной строке.
источник
error: Entry 'MyFile.java' not uptodate. Cannot merge. fatal: Could not reset index file to revision 'HEAD'.
Если вы выполняете команду «git status» во время конфликта слияния, первое, что покажет вам git, - это как отменить слияние.
источник
git reset HEAD <file>
что эффективно удалилПо правде говоря, в сети уже есть много-много ресурсов, объясняющих, как это сделать:
Git: как выполнить обратное слияние коммита?
Git: как выполнить обратное слияние коммита?
Отмена слияния , из блога Git (получено с Wayback Machine на archive.org)
Думаю, я просто резюмирую некоторые из них:
git revert <merge commit hash>
Это создает дополнительную фиксацию "отката", в которой говорится, что вы отменили слияние.
git reset --hard <commit hash *before* the merge>
Это сбросит историю до того, как вы сделали слияние. Если у вас есть коммиты после слияния, они вам понадобятся
cherry-pick
позже.Но, честно говоря, это руководство с диаграммами лучше всего, что я могу объяснить! :)
источник