Как возникает "не то, что мы можем слиться"?

Это новый для меня. Я довольно опытный пользователь git и только что добавил удаленный репо, который был разветвлен у меня, извлек обновления и затем попытался объединить их:

$ git merge HEAD f6ff240dbf47234249a68b34c8a98bb11237aa7
fatal: f6ff240dbf47234249a68b34c8a98bb11237aa7 - not something we can merge

В этом сообщении об ошибке почти ничего нет, что меня шокирует. Самое ближайшее, что я могу найти, это эта страница о том, что вы находитесь в состоянии отдельной головы. Но git status сообщает, что я на сервере ветки.

Вы можете увидеть репозитории, которые я пытаюсь использовать на github - мое репо и удаленный я хочу извлечь из. На момент написания статьи мастер моего репо был 6dc048862a93ffba6cd37883fd43e40651f248c1.

Глядя на историю, я вижу, где вилки расходятся, и я пытаюсь объединить фиксацию из 3 коммитов вверх по вилке. Это не кажется таким трудным.

Чтобы воспроизвести для себя, вы можете:

git clone https://github.com/aptivate/dye
cd dye
git remote add qris git://github.com/qris/ping-dye.git
git fetch qris
git checkout master
git merge f6ff240dbf47234249a68b34c8a98bb11237aa7

Ответ 1

Это довольно просто: f6ff240dbf47234249a68b34c8a98bb11237aa7 не существует.

Я просто понимаю, что вы имеете в виду 3f6ff240dbf47234249a68b34c8a98bb11237aa7 (обратите внимание на отсутствующий 3 в начале). Просто перейдите в список фиксации и введите Ctrl + f f6ff.

Если это кто-то, кого вы знаете, вы должны сказать им, чтобы они всегда отделялись от master и фиксировали свои пользовательские изменения там (для каждого изменения) вместо того, чтобы прямо входить в master. Затем ему не нужно переустанавливать и форсировать изменения с восходящего (вы), и вам нужно только объединить определенные ветки истории.