Я уже некоторое время использую Git для управления версиями, но я пока что использовал только одну основную ветку для всей своей разработки. По мере того, как мои проекты расширяются, пришло время беспокоиться о стабильных ветках / ветках разработки и тегах релизов.
Я читал кучу статей о ветвлении Git, но я не могу понять концепции, лежащие в основе их работы, и это вызывает у меня некоторое разочарование при попытке правильно настроить мои ветки.
Вот моя ситуация: у меня есть проект, который представляет собой набор рейковых задач, специфичных для создания нашего веб-сайта на определенном сервере. Прямо сейчас мы используем систему на основе Debian, но мы собираемся перейти на систему на основе Ubuntu, поэтому я хотел бы раскошелиться (разветвить) свой проект и создать отдельную ветку для каждого дистрибутива сервера, и я бы хотел, чтобы каждая ветка чтобы можно было легко извлекать все изменения общего кода из основной ветви, когда я запускаю git pull
в любой ветви. Из того, что я прочитал, этого можно добиться, отслеживая основную ветку, но я не могу заставить ее работать должным образом.
В дополнение к этому мне также нужно начать создание версий другого проекта, чтобы я мог его выпустить, но я действительно не знаю стандартного способа достижения этого в Git. В моей старой компании мы использовали TFS (которую я ненавидел), и это было довольно просто: мы создавали ветку из мастера и называли ее «Версия 2». Затем мы должны были убедиться, что версия 2 была стабильной, и исправлять любые ошибки, затем время от времени мы сливали изменения версии 2 обратно в основную ветку. Это способ Git для достижения этого, и если да, то как именно я это сделаю?
Итак, в заключение, я задаю следующие два отдельных (но очень связанных) вопроса:
- Как мне создать удаленную ветку (на GitHub), которая автоматически отслеживает изменения в master, чтобы я мог запустить
git pull
в новой ветке и получить все основные изменения; и
- Каков наилучший метод для управления версиями моего проекта, и можете ли вы привести некоторые примеры команд?
Большое спасибо, и, пожалуйста, дайте мне знать, если что-то требует разъяснений!