Не могу сделать замену реф "постоянный" - PullRequest
0 голосов
/ 04 февраля 2019

Мне пришлось объединить две ветви в другую, и я хотел захватить / записать эту историю.Сначала я попытался слить осьминога, но ветви были слишком разными, и Git отказался выполнить слияние.Чтобы было ясно, задействовано три ветви, а не две.

В качестве альтернативы я извлек нужные мне файлы из каждой ветви, выполнил трехстороннее сравнение с каждым набором файлов, а затем зафиксировал.Для записи истории я тогда использовал git replace --graft.Помимо необходимости обрабатывать слияние без удержания Git (помимо отслеживания файлов в других ветвях ... что немаловажно), оно прошло хорошо.

Затем я обнаружил, что вместо этогоnew commit является частью собственно ветви, вместо этого он заменяет фактический коммит всякий раз, когда что-то требует его.Это не желательно.Правда, я не знаю никаких недостатков, связанных с обработкой вещей таким способом, но это не значит, что побочных эффектов нет.Кроме того, это выглядит грязно и ненадлежащим образом.

При поиске решения я нахожу, что git filter-branch -- --all должен добиться цели ... за исключением того, что это не кажется.Во-первых, я ожидал, что по крайней мере хеш заменяющего коммита изменится.Кроме того, ошибки, которые я получаю, указывают на то, что что-то пошло не так.

Rewrite 500495d563d9209cf21d660e7d78d2a7677e570b (291/318) (6 seconds passed, remaining 0 predicted)    
WARNING: Ref 'refs/heads/cleanup
WARNING: Ref 'refs/heads/planning' is unchanged
WARNING: Ref 'refs/heads/devel' is unchanged
WARNING: Ref 'refs/remotes/nm/cleanup
WARNING: Ref 'refs/remotes/nm/planning' is unchanged
WARNING: Ref 'refs/remotes/nm/devel' is unchanged
WARNING: Ref 'refs/replace/3ec2686d2ae2ba9e7583836e26e25c7bd0b8aa19' is unchanged
WARNING: Ref 'refs/tags/sent/18-01-11' is unchanged
WARNING: Ref 'refs/tags/sent/18-02-11' is unchanged
WARNING: Ref 'refs/tags/sent/18-10-23' is unchanged
WARNING: Ref 'refs/tags/sent/18-10-24' is unchanged
WARNING: Ref 'refs/tags/sent/18-12-27' is unchanged
WARNING: Ref 'refs/tags/sent/18-12-31' is unchanged

Тогда возникают вопросы: «Как еще я мог это сделать?», «Что-то не так на самом деле пошло не так» и / или «Как я могу это исправить?"Я понимаю, что git graft - это еще один способ справиться с первым шагом, но (1) кажется, что это какое-то ужасно взломанное вместе решение, и я прочитал его совет, и (2) у меня возникли проблемы с поиском документов по git graft руководствуЯ верю, что это было удалено в пользу git replace --graft.

В случае, если это имеет значение, я уже запустил git gc до запуска git filter-branch.Я фактически исполнил партию git replace в начале прошлой недели и только понял, что это может быть хорошей идеей, чтобы "цементировать" коммит сегодня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...