Jump to content

Git: ветки, форки и слияния оных.


Быколай
 Share

Recommended Posts

В конце концов, как я это не откладывал по-лени своей, а пришлось окончательно связаться с Git-ом :)

Ситуация: есть у меня кастомизация одного фреймоворка, которую я использую в нескольких проектах. Что-то вроде прототипа cms-ки. Писалась она в муках для корпоративной нужды, но оказалось, что может пригодится и в других проектах.

Решение: После некоторых раздумий, и курения темы git'а я пошёл таким путём:

1. Вычистил "ядро", создал его репозиторий. Назовём условно core.

2. Форкнул от него редакцию "shop", куда добавил функционал специфичный для бизнеса вообще и который уже был написан к тому моменту в разрабатываемом приложении.

3. Форкнул от shop корпоративное приложение (которое и разрабатывалось изначально).

Таким образом я могу развивать независимо "ядро", бизнес-функционал, а какие-то совсем частные фичи и хотелки менеджеров впиливать в форк из п.3. Подразумевается что в форках не придётся лезть в код родителя. Зато можно смело держать в репозитории специфичные настройки окружения, конфиги, бэкапы и т.п. Легко и быстро можно развернуть редакцию или голую систему, потестить её, с разными настройками, не мучаясь с правкой конфигов.

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

Внимание вопрос: нормально через форки это я пошёл решать, или дурак?

Далее ещё >9000 вопросов по теме хочется задать, но хотелось бы сперва услышать ответ на первый B)

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Да, в моём случае можно сказать что редакция. Пока что отличия первого форка от ядра - это дополнительные модели, контроллеры и представления соответственно. Впиливать поддержку модули/плагины не вижу смысла.

Я же смогу обновить ядро в форке из родительского репозитория? Вот нашёл такой алгоритм: http://www.t1me.ru/node/252 . Только пока не понял как это работает. Выполнил все шаги, И что дальше?

Есть у меня рабочая версия. И есть обновления в родителе форка. Как мне найти какие файлы отличаются и обновить их?

UP: то есть как я себе это представляю в мечтах: merge выбрал ветвь текущего репозитория, указал ветвь оригинального-родительского репозитория, клац, вылезли все различия : почекал какие файлы заменять, какие нет, какие перезаписать, какие удалить => получил новую ветку из слияния.

Или в Git всё мудрее?

Link to comment
Share on other sites

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

Мне не очень хочется много писать да я не профи в этом деле, но вот почитайте.

ЗЫ Я сначала не совсем понял что вы хотите делать))

Edited by wwt
Link to comment
Share on other sites

UP: то есть как я себе это представляю в мечтах: merge выбрал ветвь текущего репозитория, указал ветвь оригинального-родительского репозитория, клац, вылезли все различия : почекал какие файлы заменять, какие нет, какие перезаписать, какие удалить => получил новую ветку из слияния.

Или в Git всё мудрее?

гит сливает сам (если может), если нет, пишет что не в состоянии и выделяет участки в файлах

Как мне найти какие файлы отличаются

diff

что ты понимаешь под "форкнуть"?

вообще речь о git или github? O_o

Edited by nerv
Link to comment
Share on other sites

nerv, использую сервер на https://bitbucket.org/ установлен клиент TortoiseGit, с половину операций через консоль делаю, т.к. так часто проще следовать инструкциям по которым разбираюсь в git. Пока не могу сказать что удобнее. Единственно что в консоли мне не вполне удобно — добавлять новые файлы, и не так этот процесс там нагляден.

Вот сейчас слил ветки. Без подтверждения удалилось из мастера всё что было удалено в новой ветке, модифицированные файлы перезаписались. В принципе в логе TortoiseGit всё это видно. Он сам оценивает изменения? В каких случаях возникнет конфликт?

Про diff пошёл читать глубже, спасибо.

Как у меня вышло два форка, я описал в первом посте. Собственно с вопроса правильно ли я использую этот приём и начался топик :)

Я понимаю, что вопросы довольно очевидные, и литературы по Git сейчас много... Но её настолько много, и она настолько обширна, что я уже устал гуглить, буду искренне благодарен за человеческие ответы

И меня не покидает неприятное ощущение, что сил на овладение этим инструментом, который, казалось бы должен помогать и облегчать работу, уходит на порядок больше чем на саму работу или изучение новых библиотек/фреймворком :facepalmxd: это ужасно.

Хотя, будем надеяться, что потом это окупиться. :P

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

Мне не очень хочется много писать да я не профи в этом деле, но вот почитайте.

ЗЫ Я сначала не совсем понял что вы хотите делать))

Я тоже раньше одно время использовал понемногу Гит. Даже что-то на гитхаб отправлял. Но т.к. работаю в одиночку забросил. Теперь вот решил наверстать. К сожалению раньше не работал ни с какими системами контроля версий, поэтому туго въезжаю. Всё что читаю изобилует терминами, которые не вызывают у меня совершенно никаких ассоциаций. В общем почувствовал себя Йоном Тихим на Энтеропии))

Edited by Быколай
Link to comment
Share on other sites

Я тоже раньше одно время использовал понемногу Гит. Даже что-то на гитхаб отправлял. Но т.к. работаю в одиночку забросил. Теперь вот решил наверстать. К сожалению раньше не работал ни с какими системами контроля версий, поэтому туго въезжаю. Всё что читаю изобилует терминами, которые не вызывают у меня совершенно никаких ассоциаций. В общем почувствовал себя Йоном Тихим на Энтеропии))

сам относительно недолго пользуюсь git. Без клиента тяжеловато иной раз, особенно диффы глядеть. На данный момент следующее соотношение: клиент 50% + консоль 50%. Git использую чуть ли не каждый день :)

Черепашкой не пользовался. На первый взгляд перегружена функционалом. Юзаю http://windows.github.com/

что читать - http://git-scm.com/book/ru

что еще - http://www-cs-studen...tl/ru/pr02.html

и еще - http://githowto.com/ru

p.s.: ветвление это branching

Edited by nerv
Link to comment
Share on other sites

  • 3 weeks later...

там имелось ввиду что придется подключится к удаленному серверу(ssh к примеру) и с него выполнить команду pull чтобы подтянуть изменения )) Хотя видимо уже сам понял ))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Аришан
      Здравствуйте. 
      На данный момент я верстаю для себя и пользуюсь гитом так как я привык (ниже опишу как).
      Вот сейчас хотел бы узнать, как мне придется работать с гитом когда над проектом работать буду не я один ?
      На данный момент я работаю так: 

      1. Создаю в github новый репозиторий;
      2. Клонирую этот репозиторий к себе на локальную машину;
      3. И начинаю верстать; 
      4. Комиты я пишу частые для себя (все делаю в ветке master, знаю что это не правильно но пока для меня нет необходимости их разделять);
      Комитах пишу что то типа этого: 
      - Подключает {какой то}  шрифт;
      - Создает какой то блок;
      - Добавляет файл с переменными less/sass;
      - Создает секцию header 
      - и т.д. 
      (Я понимаю что это за комит и что он делает но вот поймут ли меня коллеги, и как правильнее всего комиты делать ?)
      5. Затем отправляю комиты на уделенный сервер github. 
      6. И цикл повторяется.... 
       
      ВОПРОСЫ:
      1. Напишите пожалуйста как большинство командных проектах используется git (как можно подробнее, если можно) ?
      2. И как правильнее всего писать комиты  ?
      Слышал что их писать нужно 2 раза, один раз когда пишешь для себя (при этом для этого нужно создать новую локальную ветку для себя) и второй когда пишешь уже для команды при слиянии веток (marge), и как я понял те комиты которые я пишу они не информативны.
       
    • By AlinaS
      Компания «ВАЙЛДБЕРРИЗ» – это один из крупнейших интернет-магазинов в России, Белоруссии, Казахстане и Киргизии.
      На нашем сайте представлены более 8000 брендов мужской, женской, детской одежды и обуви, бьюти, спортивных и товаров для дома. И мы не собираемся останавливаться на достигнутом.
      Приглашаем в свою команду HTML-верстальщика (в офис)
      Вам предстоит:
      Адаптивная и кроссбраузерная верстка.
      Мы ожидаем:
      Релевантный опыт работы от двух лет
      Опыт работы и хорошее знание CSS(2-3), HTML(4-5)
      Отличное знание хотя бы одного из препроцессоров верстки Stylus/Less/Saas (мы используем Less)
      Умение качественно и валидно верстать
      Умение разбираться в чужом коде
      Умение работать в команде, умение слушать и искать компромиссы
      Внимательность к мелочам.
      Желательно:
      Опыт верстки под мобильные устройства
      Опыт работы с системой контроля версий (git)
      Опыт работы с планировщиком задач
      Опыт работы с Visual Studio.
      Мы предлагаем:
      Официальное оформление в соответствии с ТК РФ
      Официальная высокая заработная плата (обсуждается с финальным кандидатом)
      График работы: пятидневная рабочая неделя
      Корпоративные скидки на продукцию компании
      Бесплатные обеды, ароматный кофе и чай в неограниченном количестве
      Спортивный зал на территории офиса
      Широкие возможности для профессионального роста и реализации, гибкая позиция в отношении новых идей и начинаний
      Место работы: 15 минут от м. Домодедовская или м. Марьино на бесплатном корпоративном транспорте
      Весной 2018 года ожидается переезд в новый офис в шаговой доступности от м.Автозаводская.
       
       
      Прошу резюме высылать на почту skoryh.alina@wildberries.ru
    • By Eugen2k
      Доброго времени суток!
      Суть проекта: очень кратко: что-то вроде аггрегатора хостинг провайдеров. На самом деле это только звучит не особо, но по факту все намного интересней. Проект готов на 20-25%. В команде есть сильный и опытный back-end разработчик, дизайнер и маркетолог-идеолог  Но у нас демократия: каждый делится своими мыслями как сделать продукт лучше.
      Есть потенциальные клиенты, которые готовы опробовать продукт и в дальнейшем им пользоваться, покупая ежемесячную подписку.
      Главная задача: выход на минимально живой продукт. Как только мы выйдем на MVP будет понятно насколько проект коммерчески успешен или неуспешен.
      В случае успеха (когда продажи пойдут) начинаем этап привлечения инвестиций. Кандидаты-инвесторы есть.
      В случае провала - расходимся и каждый может использовать проект в качестве портфолио, так как при любом исходе им будут пользоваться.
      Кого ищем: front-end разработчик с опытом работы с:
      - React (Redux)
      - Django
      - RESTApi
      - SASS
      - Git
      Желателен опыт работы от 2-3 лет и возможность посвящать проекту хотя бы 10-12 часов в неделю.
      Условия работы:
      - доля в компании 5-10%
      - доля в компании менее 5%, но с оплатой, небольшой, так как мы еще только проверяем гипотезу и платить будем из своего кармана.
      Этот проект может быть интересен тем, кто хочет влиться в интересный проект, возглавить его и научиться чему-то новому или просто взять долю и получать с нее доход, либо продать.
      Также, тем, кому нужно интересное портфолио.
      Если есть интерес, прошу свяжитесь со мной: https://t.me/Eugen2k
    • By npofopr
      В качестве Git'а стоит Gogs. Через Веб-хук Дженкинс перехватывает коммит, но в свою рабочую директорию складывает весь проект целиком, наверно так и должно быть.
      Суть в том, что Jenkins плагином по фтп отправляет все файлы целиком, как его научить отправлять только изменённые, т.е. только последний коммит?)
      Есть разбор ответа на https://stackoverflow.com/questions/30287741/how-to-make-jenkins-filter-files-changed-in-last-commit-and-send-them-by-ftp-sft
      Но мне не совсем понятно, где/ как прописать 
      git show --pretty="format:" --name-only HEAD git log -1 --pretty=format:"%h" | xargs -I %id% git diff-tree --no-commit-id --name-only -r %id% | xargs -I % cp --parents % upd/ Или может можно как то по-другому?
    • By nerv
      Мы – студия «Элемент». Ищем верстальщика для постоянного сотрудничества, который не боится, умеет и любит верстать проекты сложнее среднего. Работа проектная, но проекты идут часто (каждый месяц 1-2, иногда даже 3 проекта).
      Кратко о нас:
      Располагаемся в Рязани. Работаем с 2008 года. У нас в команде 10 человек. Предпочитаем технологически сложные проекты.
      Обязательно:
      - знание HTML5 / CSS3 с учетом кросс-браузерности;
      - умение подбирать сторонние компоненты и стилизовать их (календари, слайдеры и т.п.);
      - умение работать с адаптивными стилями;
      - менеджер пакетов bower или jspm;
      - знание основ CSS-анимации;
      - знание основ SVG;
      - понимание основ работы git;
      - желание развиваться;
      - быть на связи, чтобы не приходилось разыскивать;
      - здравый перфекционизм в работе в части соответствия верстки макету и в части качества кода;
      - умение принимать решения в мелочах (чтобы часто не дергать менеджеров и/или дизайнеров)
      Приветствуется:
      - умение работать в комнде;
      - компонетный подход к разработке (например, БЭМ);
      - знание основ JS в объеме, который помогает верстке;
      - навыки работы с GitHub и/или GitLab
      - понимание принципов семантического версионирования
      - навыки работы с Bootstrap;
      - навыки работы с FlexBox;
      - навыки работы с Grid Layout;
      - навыки работы с WebStorm;
      - пост-обработчики: PostCSS, LESS, SASS;
      - возможность работы в часовом поясе, близком к Москве;
      - умение сверстать новый / подверстать готовый код, когда он уже включен в шаблонизатор движка (smarty). Там никаких Америк нет, просто требуется аккуратность;
      - наличие ИП.
      Что нам важно видеть в отзыве на наше предложение:
      - примеры 3-4 свежих работ онлайн (посмотрим, какие используются методики);
      - опыт верстки в годах;
      - краткое описание умений по списку наших требований (буквально по одной строке на пункт);
      - ожидаемая ставка часа в рублях;
      - метод перечисления оплаты;
      - в каких сферах вы бы хотели развиваться в ближайшие 1-2 года.
      Если написать отзыв в таком виде, то мы сэкономим друг другу время. А это приветствуется.



      Вопросы/ответы можно писать сюда или мне в личку.
       
      От себя замечу, что целевые браузеры это: последние версии Chrome(ium), FireFox, Safari, IE11/Edge.
      Целевые платформы: десктоп + мобильные устройства.
      Не pixel pirfect, но и чтобы выглядело достойно =)
      Если вы не знакомы с парой пунктов из обязательно списка, но у вас присутствуют адекватность и здравый смысл, то мы можем пообщаться и выяснить детали)
      Мы понимаем, что "знать все" не возможно. Вместе с тем, мы постарались перечислить то, с чем вам, вероятно, придется иметь дело.

      На js-фронтэнде у нас Angular 1.x, Vue, jQuery.
      Для сборки применяется Webpack.
      Для запуска задач Gulp.

      Взаимодействовать придется в том числе со мной , будет шанс научится чему-либо из js, если не знаете, но хотите развиваться в этом направлении.
      В недалекой перспективе на бекэнде Node.js. Если хотите развиваться в эту сторону, такая возможность тоже имеется.
      Вы можете писать код в чем угодно (IDE, редакторы), но ваши инструменты должны уметь деплоить на удаленный сервер (требуется для ряда проектов).
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy