Вставка сторонних изменений в git

Мне передал проект друг. Версии не использовались. Мне нужно было внести изменения, поэтому я создал git-репозиторий из этого каталога проекта с помощью Sourcetree. Я использую эту версию только для локального использования. Там нет пульта. Мне просто нравится идея, что каждое изменение, которое я делаю, хорошо отслеживается и может быть отменено в любое время. Я сделал много изменений.

Теперь мой друг придумывает новую копию проекта. Он также сделал много изменений.

Каков наилучший способ объединить эти изменения?

  • Должен ли я клонировать свой репозиторий в отдельный каталог, перезаписать файлы проекта и перенести их в исходный?
  • Я просто перезаписываю свою рабочую копию?
  • Создать и оформить ветку и перезаписать эти файлы?

(Я понимаю, что мне всегда нужно будет вручную проверять каждое "изменение" и решать, включать это или нет.)

2 ответа

РЕДАКТИРОВАТЬ

Если ваш друг не использует git и предоставляет вам весь каталог своего проекта, хороший способ - использовать папку diff для создания патча и применить этот патч к вашему git-репозиторию.


предыдущий ответ

Предполагая, что ваш друг обслуживает свой git-репозиторий локально, вы можете использовать git remote добавить свой репозиторий git в качестве удаленного к локальному. Затем вы можете вытащить / просмотреть / объединить изменения из его репозитория в свой. Твой друг может сделать то же самое на своей машине. Таким образом, вы сможете синхронизировать свои изменения напрямую, без каких-либо серверов между ними. Недостатком является то, что оба ваших компьютера должны быть в сети, когда git push а также git pull команды выполнены.

Git является децентрализованным VCS, поэтому он загружает все коммиты из репозитория прямо на вашу машину.

Тем не менее, команды очень часто используют хостинг репозитория git для удобства. Этот размещенный git-репозиторий действует как квазицентрализованный. Вы можете вносить изменения в нее в любое время, не дожидаясь, пока ваш друг окажется в сети. По мере роста вашей команды для 10 разработчиков становится намного удобнее иметь один центральный удаленный репозиторий, а не 9 отдельных пультов для каждого из других разработчиков.

После того, как вы добавили новую удаленную ветку в ваш репозиторий git, вы можете использовать git branch Команда на переключение веток.

Как добавить пульт в Sourcetree

Git-Remote Man

мерзавец

мерзавец

Немного запоздало, но может быть полезно для будущих поколений...

Гораздо более чистым способом является извлечение ветки "друг" в коммите, который должен содержать его оригинальный (это, вероятно, первый коммит в представлении), неизмененный вклад.

В этой ветке сохраните его вклад, зафиксируйте, а затем объедините эту ветку с вашим "хозяином".

Как только вы поймете этот механизм, взгляните на механизм слияния поддеревьев

Другие вопросы по тегам