Использование с помощью git
Итак, я клонировал проект в github и исправил патч. Поскольку это первый раз, когда я работаю в git Im, пытаясь найти лучший способ разместить его в Интернете.
После проверки моего собственного (клонированного) репозитория на github была только одна ветка: мастер. Я создал ветку, myfix, которая теперь содержит один коммит, который является исправлением ошибки.
- Должен ли я теперь нажимать все на свой клонированный проект на github? Я предполагаю, что это создало бы myfix моего ветки в моем проекте github, в котором было бы зафиксировано это единственное исправление.
- Должен ли я объединить myfix в главную ветвь, удалить myfix и затем нажать все?
При поиске в Интернете кажется, что общая/хорошая практика заключается в том, чтобы оставить мастер нетронутым, используя это исключительно для вытаскивания из реального/оригинального публичного репозитория проектов (то есть других принятых взносов и т.д.). Но другие предлагают другие стратегии:
- Создайте ветвь вверх по течению, поместите туда свои чистые и готовые вклады, чтобы другие могли легко их найти, не смешивая их с моими другими незавершенными/экспериментальными ветвями (интересно, почему они даже будут в сети, если бы они были настолько неполными).
- Создайте ветку вниз по течению, потяните другие изменения здесь для автономного слияния.
Если я следую вышеприведенным двум (в настоящее время чувствует себя немного переполненным), какая цель должна заполнить главная ветка?
Git может выполнять любую комбинацию (или все) вышеуказанного. Это немного меня смущает, как легко показать свою работу другим. Есть ли такой "общий" рабочий процесс? Или это каждый человек для себя, а вы публикуете конкретную ревизию в определенной ветке (которая нажата) в трекер ошибок для исправленной ошибки?
Ответы
Ответ 1
Когда вы клонируете репозиторий, Git автоматически создает ветки удаленного отслеживания, которые выполняют то, что вы описываете для главной ветки. Вы можете перечислить эти ветки удаленного отслеживания с помощью:
git branch -r
Поскольку отслеживание восходящего репозитория уже сделано для вас, вы обычно используете свою основную ветвь для изменений основной линии в проекте. Вот что я сделал бы в вашей конкретной ситуации:
- Объединить ветку myfix с мастером в вашем клоне. (Сделав это в "ветке темы", это хорошая практика.)
- Нажмите ведущую ветвь в Github. (Непонятно, вы разветвляли исходный репозиторий или просто клонировали его. Вам нужно будет разбить оригинальный репозиторий, создав собственную копию, чтобы следующий шаг работал.)
- Отправьте github запрос на перенос владельцу репозитория, который вы разветкили.
Ответ 2
Github позволяет отправлять тянуть запросы владельцам других репозиториев, а в запросе указывается, где найти интересные изменения. Это означает, что вам не нужно сохранять все изменения в определенной хорошо известной ветке.
Простота использования другого человека повысит ваши шансы на принятие патча, поэтому держите чистый мастер в качестве общей контрольной точки и вносите изменения в ветки от мастера. Держите свои ветки узкими в фокусе: вместо того, чтобы накапливать еще одиннадцать новых функций в одной ветке, держите их отдельно, где вы можете сделать это чисто.