Как объединить два ответвления без общего предка?

Первую вещь, которую Вы хотите попробовать, называют Пацифист - чему позволяет Пацифист, сделать необходимо открыть большой пакет (такой как XCode) и получить доступ к частям ее непосредственно. Я вполне уверен, Вы будете в состоянии найти меньший пакет в пакете XCode, который просто имеет gcc.

ОДНАКО мне не ясно, что это - оптимальный маршрут. Если Вы планируете сделать, I разработки Какао или Углерода сильно предлагает установить весь пакет, потому что Вам будут нужны вся документация и заголовки. Если Вы - только планирование выполнения материала командной строки, все еще можно найти, что необходимо ввести по абсолютному адресу вокруг в XCode для идентификации всех пакетов, в которых Вы будете нуждаться - вещи, такие как библиотеки, заголовки, страницы справочника и так далее.

, В целом, Вы - вероятно, все еще более обеспеченная установка всего этого - если пространство HD действительно трудно (потому что Вы находитесь на крошечной старой iMac, например), тогда смотрят на инструменты как Одноязычный - Одноязычный, удаляет всю международную поддержку со стороны всех различных приложений OS X, которые могут легко уменьшить размер приложения на 50%.

29
задан alexandrul 29 September 2009 в 07:36
поделиться

1 ответ

Заявление об ограничении ответственности : Я сам только однажды использовал «точки прививки» в репозитории игрушек. Но это непонятная функция, о которой вы, возможно, не слышали, и которая _может_ быть полезной в вашей ситуации.

Вы можете использовать «точки прививки», чтобы подделать информацию о происхождении. См., Например, Для чего нужны .git / info / grafts? или сразу переходите к записи git wiki о точках прививки .

По сути, вы должны создать файл .git / info / grafts , который заставляет git думать, что коммит M1 является предком коммита M2 :

$ cat .git/info/grafts
<your M2 commit hash> <your M1 commit hash>

Впоследствии это будет выглядеть так M2 был пустой фиксацией, которая только что объединила I2 и M1 в общее дерево.

Главный недостаток : точка пересадки не зафиксирована; поэтому он не извлекается, но его необходимо добавить в каждую локальную рабочую копию репозитория вручную.



Обновление: используйте вместо него git replace --graft .

Точки пересадки , как описано выше, были заменены. Запустите

git replace --graft <your M2 commit hash> <your M1 commit hash>

, чтобы создать трансплантат. Он хранится в .git / refs / replace / . Хотя git не извлекает и не отправляет эти ссылки по умолчанию, их можно синхронизировать между репозиториями, используя:

git push origin 'refs/replace/*'
git fetch origin 'refs/replace/*:refs/replace/*'

( StackOverflow: Как отправить «ссылки / заменить», не нажимая другие ссылки в git? )

26
ответ дан 28 November 2019 в 01:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: