2

Я читаю туториал по гит и пытаюсь разобраться, вроде все понял. Вот следую рекомендациям "удачная модель ветвления" , как правильно это работает :

Так

На сервере 2 ветки master и develop и когда мне нужно сделать новую фичу я делаю себе локально ветку feature от удаленой ветки develop в ней работаю и потом делаю ей пуш обратно в удаленую ветку develop

Или так

У меня копии этих веток. То есть 2 ветки master и develop на сервере и 2 ветки master и develop локально когда нужна новая фича, то я делаю себе локально ветку feature работаю в ней, потом делаю ей мердж в локальную ветку develop и уже локальную ветку develop пушу в удаленую ветку develop ?

Я просто не могу до конца сообразить обязательно ли ветки на сервере и локально являются точной копией друг друга или я могу иметь ветки на сервере делать от них ветки локально и пушить их обратно на сервер когда заканчиваю с ними?

Sirop4ik
  • 10,954
  • Судя по всему вам и сервер то не особо нужен. – Vladimir Gamalyan Jul 10 '16 at 08:46
  • @VladimirGamalian судя по чему? – Sirop4ik Jul 10 '16 at 08:47
  • По вопросу. В смысле, что раз нет отдельного человека ответственного за релиз, то сервер у вас больше как бекап похоже работает. – Vladimir Gamalyan Jul 10 '16 at 08:49
  • 1
    Ну и у git другая философия - все что у вас на компе - это такой же полноправный репозиторий как и на сервере или у сотоварища. Можете как угодно ветвить, и дальше либо сливать с другими репозитариями, либо не сливать (полная свобода действий). – Vladimir Gamalyan Jul 10 '16 at 08:52
  • @VladimirGamalian я использую его только для сохранения проекта, чтоб хранить проект не только локально, а и удалено, чтоб в случае чего у меня была копия... Ну и для понимания его работы вот тренируюсь и стараюсь следовать принципу удачная модель ветвления – Sirop4ik Jul 10 '16 at 08:55
  • Если только как копия - то можно время от времени пушить разом все (ветки, теги) в удаленный (ые) репозитарий. – Vladimir Gamalyan Jul 10 '16 at 09:01
  • При наличии master/develop часто возникает необходимость ещё в ветке hot-fixes, которая ответвляется от master, правится, и сливается назад, на случай каких-то срочных фиксов, когда develop ушел далеко от master. – Vladimir Gamalyan Jul 10 '16 at 09:02
  • Я тут тоже (в очередной раз) поигрался с git и опять пришел к выводу, что для одиночной работы старый добрый tar в сочетании с парой файлов ChangeLog и MyNotes для меня удобнее (может и для Вас тоже). – avp Jul 10 '16 at 11:56
  • 1
    @avp да но я не знаком с tar и + я хочу наработать опыт работы с гит чтоб потом было проще ориентироваться в командной работе – Sirop4ik Jul 10 '16 at 12:45
  • Вот вам еще полезная ссылка как раз по той модели ветвления, которую вы описываете: http://danielkummer.github.io/git-flow-cheatsheet/index.ru_RU.html – Руслан Терехов Jul 10 '16 at 11:21

1 Answers1

4

У вас вопросы появляются из-за двух моментов:

  • Существует много удачных практик разработки в git (и вы ссылаетесь только на одну из них) - поэтому вам всё время отвечают на ваши вопросы "и так тоже бывает можно, гит весьма гибок". Как команда договорится - так и будет. Пробуйте разные методики, не утыкайтесь в одну -- команды вам могут встретиться разные в жизни.
  • Вы работаете в одиночку, учитесь основам гит - и просто не можете порой сформулировать вопросы, которые у вас и не возникли бы при командной работе. Чесслово, для одиночной работы можно настолько много всего упростить и это будет намного быстрее в работе (чем меньше команда разработчиков -- тем меньше накладные расходы на бюрократию, на нетворкинг и т.п.) В первой же команде вы бы быстро поняли, что и как принято, как работает. После третьей команды можете уже четвёртой рекомендовать поменять методику на основе своего опыта, возможно примут если окажется удобнее.

Но давайте попробуем ответить строго на поставленные вопросы:

обязательно ли ветки на сервере и локально являются точной копией друг друга или я могу иметь ветки на сервере делать от них ветки локально и пушить их обратно на сервер когда заканчиваю с ними

Ответ1, тривиальный. "Как договоритесь с командой". Можете вообще выкинуть половину описанной методики, если сам с собой договоритесь.

Ответ2, формальный. "В методике, которую вы ходите освоить есть значительная свобода для неважных ветвей (взяли себе фичу из трекера, работаете с ней в отдельной ветке как вам удобно. с вас разве потребуют соблюдать определённые принципы наименования веток, чтобы никто не путался - скажем, по номеру тикета) и строгие правила по работе с основными ветками, особенно - по выкладыванию релиза". Правила определяет команда, они в статье опущены, так как некритичны.

Вас такие ответы устраивают или что-то ещё непонятно? Суть вот какая: проекты все разные, команды и методологии -- тоже, поэтому на ваши несколько сумбурные вопросы сложно дать ответы не в духе "всяко бывает". Да, существуют best practice, их нужно знать (ваша статья -- лишь одна из рекомендуемыех best practice), к ним стремятся но в каждом конкретном проекте/команде могут быть выкинуты некоторые детали.

A K
  • 28,718
  • Да я тут еще немного почитал + ваш ответ и вроде опять все стало понятно)) Вроде пока все работает)) Просто эти ветки меня путают, там одни тут другие и было не понятно, то ли они должны соответствовать друг другу с двух сторон то ли я могу не держать их копий... Но сейчас для себя остановился на том, что нужно создать мастер и дев удалено и от них делать локальные ветки фичи в них работать и отправлять обратно на сервер. Сервер мне нужен чтоб хранить там проект на всякий случай если вдруг что... Работаю я сам так что нужно просто для себя понять что как сделать)) – Sirop4ik Jul 10 '16 at 11:08
  • Я только не могу разобраться, как можно создать ветку на сервере? Я делаю команду git checkout -b develop и создается ветка дев, но она создается локально... А как ее создать на сервере? Мне нужно чтоб на сервере был мастер и дев... Сейчас у меня только мастер на сервере – Sirop4ik Jul 10 '16 at 11:14
  • @AlekseyTimoshchenko дык git push -u origin develop – A K Jul 10 '16 at 11:22
  • @AlekseyTimoshchenko Если любытны подробности, то посмотрите вот этот вопрос сегодня только задали. – A K Jul 11 '16 at 16:03