Cовместная работа в git¶
Стратегии, которые сегодня затронем с использованием fork, pull requests и --track
В мире разработки программного обеспечения совместная работа над проектами становится все более распространенной практикой. Особенно актуально это для открытых проектов, где участие нескольких разработчиков может значительно улучшить результат. Однако управление изменениями, контроль версий и координация работы нескольких пользователей над одним репозиторием могут быть вызывающими проблему задачами.
Работа нескольких пользователей над одним репозиторием¶
HEAD - это где ваша рабочая директорию прямо сейчас
HEAD - это ссылка на активную ветку
branch - это ссылка на фиксацию(коммит)
Fork + pull requests¶
Один из популярных подходов к совместной работе над репозиториями в Git - использование fork и pull requests.
Этот метод позволяет пользователям делать копии репозитория (fork), вносить в них изменения и предлагать их внесение в оригинальный репозиторий через pull requests.
Давайте рассмотрим этот процесс более подробнее:
- Делаем fork
- Клонируем форкнутый репозиторий к себе
- Чтобы обновить свой форк на github нужно локально сделать fetch upstream с оригинального репозитория(добавив
git remote add upstream https://...
) а потом сделать - push в свой форк на github
чтобы обновить оригинальный репозиторий делаем локально новую ветку, в которую комитим все изменения и push в свой форк а затем на сайте создаем свой PullRequest
Когда 2 и > удаленных репозиториев то по умолчанию все действия проиходят с origin, а для работы со вторым нужно указывать его имя
git remote add upstream https://github.com/..
Используя --track¶
1-st dev(owner repo)
git remote add origin https://*.git
# -u связь веток, т.е все изменения отслеживаем и пушим на origin
git push -u origin -all
git branch user1
git checkout user1
# --set-upstream добавляем связь новой ветки и пушим ее на origin
git push --set-upstream origin user1
2-nd dev
git clone http://*.git
# начинает работу в своей ветке
git branch user2
git checkout user2
# добавляет связь свой ветки user2 и origin и пушит ее
git push --set-upstream origin user2
1-st dev