Фатальне: неможливо перемотати вперед, перервати


89

Чому Git більше не дозволяє мені зливати вперед? Якщо я спробую змусити його скористатися --ff-only, я отримую повідомлення "fatal: Неможливо перемотати вперед, перервати". Я усвідомлюю, що в цьому є величезні переваги merge --no-ff, але я просто спантеличений, чому --ff-onlyзараз не можу ?

Відповіді:


95

Ваша гілка більше не базується безпосередньо на гілці, в яку ви намагаєтесь об’єднати її, - наприклад, до цільової гілки, якої немає у вашій гілці, було додано інший коміт. Таким чином, ви не можете перемотати його вперед (оскільки для перемотування вперед потрібно, щоб ваша гілка повністю містила гілку призначення).

Ви можете перебазувати свою гілку поверх цільової гілки ( git rebase <destination branch>), щоб переробити коміти таким чином, щоб вони швидко перейшли вперед, або ви можете зробити регулярне злиття.


Як це можливо? Це неправильно. Це має бути якесь налаштування, яке змінилося.
mathtick

3
@mathtick це повідомлення надходить від вашої конфігурації pull, встановленої на ffкомандуgit config pull.ff only
Al Duncanson

82

git pull --rebase. На відміну від іншого рішення, вам не потрібно знати назву філії призначення.


11

Причиною отримання цієї помилки є "Конфлікт злиття". Коли у вашому файлі GitHub було внесено кілька редагувань / оновлень без внесення змін на кожному етапі оновлення, це призводить до конфлікту злиття.

Звичайний випадок: -

$ git pull

Примітка: - Ви отримаєте помилку. Фатальне: неможливо перемотати вперед, перервати

Спробуйте це: -

$ git pull origin master --rebase

Примітка: - Тепер після цієї команди ви отримаєте проблеми конфлікту злиття. Тож тепер ви можете перейти до свого файлу та врегулювати конфлікт вручну. Помилка конфлікту об’єднання


1

Це пов’язано з тим, що ви ввімкнули параметр лише перемотування вперед. Справа в тому, що ваше витягнення з гілки створить коміт злиття у вашому локальному git, а опція лише перемотування вперед не дозволяє створювати коміт злиття під час витягування.

У випадку великої команди Ви в кінцевому підсумку будете перебазовувати та вирішувати конфлікти багато часу, а також для кожного і кожного коміту, що надходить від витягування.

Я пропоную вам видалити ff = only рядок з локального конфігураційного файлу git.

$ cd до-мого-проекту-кореневий каталог

$ nano .git / config

[pull]
        ff = only // remove this line
        rebase = false

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