Як зробити висновок про об'єднання файлу?


103

Після об'єднання файлу в Git я спробував витягнути сховище, але виникла помилка:

Ви не завершили злиття. (MERGE_HEAD існує)

Як можна укласти злиття?

Відповіді:


94

Перевірте статус ( git status) вашого сховища. Кожен незв’язаний файл (після того, як ви вирішите конфлікти самостійно), слід додати ( git add), а якщо немає неперевантаженого файлу, слідgit commit


11
Але що робити, якщо все зроблено ( git statusпоказує чистий робочий режим), а вищезазначена помилка все ж виникає?
Маріус Сутьє

1
@Marius Переконайтеся, що ви використовуєте стандартний, git statusа не псевдонім, який фільтрує будь-яке повідомлення. У поточній версії, коли ви запускаєте статус git, він показує вам повідомлення, що вам слід зробити, щоб "укласти об'єднання". І якщо ви абсолютно впевнені, що все об’єднано, і нічого не втратите, ви можете просто видалити файли в .git / MERGE *, які зберігають те, що ви намагалися об'єднати, і за замовчуванням виконувати повідомлення для цього злиття
MBO

1
Дякую, це я зрештою зробив, але якось це здається баггі. Як може існувати MERGE_HEAD, якщо ви об'єднали і вчинили все?
Маріус Сутьє

2
Так, у мене було те саме питання, що і у Маріуса, він зробив злиття, вирішив конфлікти, але зараз нічого (якось) робити. Довелося вручну видалити файли MERGE *, як було запропоновано.
Саймон Схід

@johndpope power ("tnx", 100)
knagode

31

Примітка та оновлення:

Починаючи з Git1.7.4 (січень 2011 р.), У вас є git merge --abortсинонім " git reset --merge", коли відбувається злиття.

Але якщо ви хочете завершити злиття, хоча чомусь нічого не залишається додати, то rm -rf .git/MERGE*Git може бути достатньо, щоб Git забув про поточне злиття.


якщо ви видалите MERGE_HEAD, чи не буде отриманого комітету мати лише одного з батьків, щоб у вас не було історії об'єднаної гілки?
Джейсон Гімаат

@JasonGoemaat зважаючи на те, що ми намагаємося скасувати злиття, так чи інакше не було б "результату".
VonC

20

Найпростіше рішення для цього я знайшов:

git commit -m "fixing merge conflicts"
git push

Насправді для мене я не працював, він працював без -м.
Олександр Павич

@ Muaz-Al-Jarhi Подивіться відповідь користувача3127648
SebMa

Не могли б ви пояснити, що це робить?
Біллал Бегерадж

-m - це лише прапор для включення повідомлення
atamata

1

Якщо ви зіткнулися з цією помилкою в SourceTree, перейдіть до пунктів Дії> Вирішити конфлікти> Перезавантажте об'єднання.

Використовувана версія SourceTree - 1.6.14.0


0

У мене була така ж помилка, і я дотримувався статті, знайденої в Google, вирішує мою проблему. Ви не завершили злиття


Посилання на рішення завжди вітаються, але, будь ласка, додайте до своєї інформації важливу інформацію, оскільки посилання може бути застарілою.
slfan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.