2015-02-02 2 views
0

У меня есть сайт HTML/PHP, который в настоящее время не находится ни в каком источнике управления. У меня есть две разные папки: разработка и живая папка. В папке разработки я создаю новые функции, а живая папка - это источник, который фактически используется для реальных пользователей. Я хочу представить dev и жить как две разные ветви в git (я думаю, что это правильный способ моделирования, я открыт для других предложений tho). Я хочу убедиться, что после того, как я настроил эти две ветви, я смогу использовать git merge (dev -> live), чтобы переместить функции из dev в live, как только они будут завершены/протестированы.Как импортировать существующий исходный код с несколькими ветвями в git

Я не уверен, как бы я мог правильно настроить эти две ветви, поскольку они уже существуют в моих папках и несколько отличаются друг от друга. У них разные пути, разные данные о подключении к базе данных и т. Д. Это обычно не касается меня, если проект был отслежен в git с самого начала, потому что тогда ветви dev и live, естественно, были бы разветвлены в истории и имели бы общий общий предок. Я хочу убедиться, что merge будет работать для переноса функций, но не перезаписывать фиксированные пути, информацию о подключении к базе данных и т. Д.

Я использую Bitbucket и SourceTree.

ответ

0

Предположим, что у вас есть два каталога (папки): /dev и /live. Вы правы, чтобы попытаться поместить их в отдельные ветви. Но, кроме того, вы захотите сделать два отдельных репозиториев для будущего. Вы также можете захотеть иметь центральный репозиторий, чтобы вы могли сотрудничать с другими, но если у вас нет такой необходимости, вы можете просто внести изменения в «живой» репозиторий из репозитория «dev».

Они имеют разные пути, разные данные подключения к базе данных и т.д.

Этот тип материала должен не отслеживаться на всех. Все файлы свойств следует игнорировать с помощью файла .gitignore. Пожалуйста, прочитайте об этом в documantion for .gitignore.

Команды, перечисленные ниже, немного упрощены. Если у вас много дискретных ожидающих изменений, вы можете создать несколько филиалов непосредственно от мастера и добавлять файлы только к индексу, принадлежащему определенной ветке. Это особенно актуально, если вы не планируете одновременно выполнять миграцию. Однако для вашей первой попытки было бы легче протестировать dev, пока он не сможет полностью переместиться в живую, и после этого начните более эффективный рабочий процесс.

cd /live 
git init 
git add <...> #My suggestion is that you add files manually, so that you do not add configuration files by mistake 
git commit -m 'Initial Commit' 
cd /dev 
git init 
cd /live 
git remote add dev /dev/.git 
git push dev master # this is the only time you should push from live to dev 
cd /dev 
git checkout -b develope 
git add <...> #same warning as before 
git commit -m 'Initial Development Commit' 

После этого момента вы должны проверять новую ветку каждый раз, когда работаете над новой функцией или исправлением ошибок. Когда вы завершили тестирование в каталоге dev, объедините свою функцию в мастер. Тогда:

cd /live 
git fetch dev master 

Есть другие вещи, которые вы можете сделать, например, мечения релизов, но я думаю, что это уже выходит за рамки вашего вопроса.

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