2012-08-21 4 views
0

Позвольте мне объяснить проблему с примера:Git: Заделка изменения, сделанные в несвязанной репо

я работал в моем старом проекте репо OlDRepo/libs/graphics

Я сделал ряд изменений в графике и сделали много коммитов ,

Теперь, я начал работать с новым проектом с новой версией графики

NewRepo/Dir1/libs/graphics

Я хочу, чтобы объединить все изменения, сделанные в старые графиках Dir нового проекта (Пожалуйста, обратите внимание dir1 в путь)

Я могу сделать простые git diff и diff, но я хочу поддерживать отдельные коммиты.

Как это сделать?

EDIT: Я сомневаюсь, что мои вопросы не имеют смысла никому (кроме меня!). Позвольте мне попробовать еще раз с реальной проблемой.

Я начал проект iphone с версией cocos2d-iphone 1.1. С его шаблона xcode он создает новый проект с новым репо с первоначальной фиксацией, содержащей cocos2d-iphone version 1.1 (Примечание: его просто источник)

Я продолжаю разрабатывать свой проект ... совершать, совершать ... [Добавлено новых файлов] В какой-то момент мне не понравилось что-то в версии cocos2d-iphone 1.1. Я напрямую изменил исходный код (может быть, я не должен). И с гордостью зафиксировать .. [Улучшено Cocos2d-ccnode]. Снова зафиксировать .. [Улучшено Cocos2d-ccsprite]

И, наконец, выпустила приложение.

Теперь, я хочу работать над новым проектом, я проверил, доступна версия cocos2d-iphone версии 2.0. Я установил новый шаблон проекта (с cocos2d-iphone версии 2.0).

создал новый проект из шаблона, еще раз его новый проект с новым репо с начальным совершить содержащий cocos2d-iphone версии 2.0

Обратите внимание, что cocos2d-iphone версии 2.0 не весь переписанный 1.1, но содержит небольшие изменения.

Теперь я помню свое улучшение (!) Версии cocos2d-iphone версии 1.1. Я хочу применить эти изменения к новому проекту. Определенно не в одной фиксации.

ответ

0

Я хотел бы предложить:

cocos1.1  cocos2.0 (you work on this right now) 
    \   
    \  
    changes 

это то, что у вас есть, не так ли? Так что вы хотите выбрать точные изменения, которые вы сделали на cocos1.1, и применить его к cocos2.0? мое предложение - git cherry-pick ваши изменения.

Вы можете перебазироваться, как хорошо, но я не уверен, что он будет работать, так как cocos2.0, кажется, не быть напрямую связаны с cocos1.1 (вы можете попробовать этот способ, как хорошо, хотя)

Кстати , Я полагаю, что кокосы1.1 и 2.0 - это не то же самое местное репо. поэтому вы должны добавить cocos1.1 как удаленный первый: в cocos2.0, запустите git remote add cocos1.1 path/to/cocos1.1. Затем git branch --track cocos1.1changes cocos1.1/desiredbranch.

Таким образом, вы определяете свой список коммитов, скажем c1-c20 (вам нужно будет использовать их SHA-1 хэш). Они находятся на ветке cocos1.1changes.

Что вы будете делать, это git checkout cocos2.0 для работы на правой ветке, а затем применить свои коммиты. Вы можете начать с просто git cherry-pick c1 (c1 - это хэш SHA-1)

Я думаю, что есть трюки, такие как git cherry-pick c1~c20 или что-то в этом роде, но в любом случае получить информацию о вишневом сборке, я думаю, это то, что вам нужно.

Удача

+0

Я создаю старое репо с общедоступной копией графики lib. – user602592

+0

Позвольте мне еще раз пояснить: я создал старый проект с общедоступной копией графической библиотеки. Когда я закончил старый проект; новая графическая библиотека доступна, и я должен создать новый проект с новой графикой lib; но я сделал много частных изменений (улучшение!) в старой графической библиотеке, и я хочу вернуть эти изменения. – user602592

+0

, так что вы хотите переустановить? ваши изменения и новая графика являются как «детьми», так и старыми репо? В этом случае то, что вам нужно сделать, это нечто вроде «git rebase» или просто слияние (вы можете сохранить историю изменений, объединившись в свою локальную копию). Если это так, я отредактирую ответ – Vince

Смежные вопросы