Я зіткнувся з конфліктом при злитті. Як я можу скасувати злиття?
Я використав "git pull" і виник конфлікт злиття:
unmerged: _widget.html.erb
You are in the middle of a conflicted merge.
Я знаю, що інша версія файлу хороша, а моя погана, тому всі мої зміни слід скасувати. Як це зробити?
2374
3
Оскільки ваш
pull
був невдалим, тоHEAD
(а неHEAD^
) є останнім "дійсним" коммітом на вашій гілці:Інша частина, яку ви хочете, це дозволити їхнім змінам перевизначати ваші зміни.
Старіші версії git'а дозволяли використовувати стратегію &quo ;їхнього&quo ; злиття:
Але відтоді це було вилучено, як пояснюється у цьому повідомленні Junio Hamano (супровідник Git'а). Як зазначено в посилання, замість цього ви повинні зробити так:
Я думаю, що вам потрібне "перезавантаження".
Майте на увазі, що
git revert
означає щось зовсім інше, ніж, скажімо,vn revert
- в Subversion revert відкидає ваші (нефіксовані) зміни, повертаючи файл до поточної версії з репозиторію, тоді якgit revert
"скасовує" комміт.Команда
git reset
повинна зробити еквівалент командіvn revert
, тобто відкинути ваші небажані зміни.У цьому конкретному випадку використання ви не хочете скасовувати злиття, а просто вирішити конфлікт у певний спосіб.
Також немає особливої потреби у скиданні і виконанні злиття з іншою стратегією. Конфлікти були правильно підсвічені git'ом, і вимога прийняти зміни іншої сторони стосується лише цього одного файлу.
Для не об'єднаного файлу в конфлікті git робить доступними загальну базу, локальну та віддалену версії файлу в індексі. (Звідси вони зчитуються для використання у інструменті 3-стороннього порівняння за допомогою
git mergetool
). Ви можете використовуватиgit show
для їх перегляду.Найпростішим способом вирішення конфлікту є дослівне використання віддаленої версії:
Або, з git >= 1.6.1: