Слияние не-git-кода с кодом на основе git (исходная база кода такая же) - PullRequest
0 голосов
/ 31 марта 2012

У меня есть клиентский сайт с единой кодовой базой. Что касается моих недавних изменений, я взял живую копию веб-сайта и поместил ее в новый GIT-репозиторий и начал обновлять ее. Теперь есть другой разработчик, который внес изменения в живой сайт, поэтому я хотел бы сделать что-то, что позволило бы мне относиться к его изменениям как к другой ветке или чему-то другому и плавно объединять различия. Каков был бы правильный подход к этому? Я подумал добавить код в новую ветку, а также создать патч diff и применить его к коду GIT.

Ответы [ 3 ]

2 голосов
/ 01 апреля 2012

Я предполагаю, что вы сделали что-то вроде следующего:

git init project
cd project
<copy existing code to this directory>
git add -Af .
git commit -m "Import code"
<edited some files>
git commit -a -m "Made changes"

Наилучший подход - создать ветку из исходного коммита импорта и сделать еще один снимок живого сайта в этой ветке.Предположим, что исходная фиксация импорта имеет идентификатор фиксации f00ba4 (вы можете использовать git log, чтобы узнать фактический идентификатор SHA1).Чтобы включить изменения других разработчиков, вы можете сделать следующее:

  1. Создать новую ветку с именем live, указывающую на фиксацию f00ba4, а затем проверить ее:

    git checkout -b live f00ba4
    
  2. Убедитесь, что нет неотслеживаемых файлов:

    git clean -dxf
    
  3. Скопируйте последний код с живого сайта

  4. Зафиксируйте последний код:

    git add -Af .
    git commit -m "take another snapshot of the live site"
    
  5. Переключитесь на свою ветку:

    git checkout master
    
  6. Включите изменения других разработчиков сВаши изменения:

    git merge live
    

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

  1. Обновите ветку live, используя последний код:

    git checkout live
    git clean -dxf
    <copy the files from the live site>
    git add -Af .
    git commit -m "another snapshot of the live site"
    
  2. Объедините изменения в live в master:

    git checkout master
    git merge live
    

Когда вы будете готовы к развертыванию ваших изменений:

  1. Убедитесь, что ветка live обновлена:

    git checkout live
    git clean -dxf
    <copy the files from the live site>
    git add -Af .
    git commit -m "another snapshot of the live site"
    
  2. Слей свойизменяется на live:

    git merge master
    
  3. Развертывание файлов на работающем сайте

0 голосов
/ 31 марта 2012

Ветвление - нормальный подход в Git. Это означает: переходите от вашего текущего кода, выполняйте слияние там, и, когда это будет успешно, объединяйте его обратно в основную ветвь.

Ветвление - это не то, что отличается от обычного (например, в SVN), но это часть обычного рабочего процесса в Git. Не нужно, чтобы редактирование этого разработчика мешало вашей работе: просто объедините отдельно, а затем вернитесь в основную ветвь.

0 голосов
/ 31 марта 2012

Хороший способ сделать это - создать другую ветку и затем отправить свои изменения.

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

...