Skip to content

Cовместная работа в git

Стратегии, которые сегодня затронем с использованием fork, pull requests и --track

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

Работа нескольких пользователей над одним репозиторием

HEAD - это где ваша рабочая директорию прямо сейчас

HEAD - это ссылка на активную ветку

branch - это ссылка на фиксацию(коммит)

Fork + pull requests

Один из популярных подходов к совместной работе над репозиториями в Git - использование fork и pull requests.

Этот метод позволяет пользователям делать копии репозитория (fork), вносить в них изменения и предлагать их внесение в оригинальный репозиторий через pull requests.

Давайте рассмотрим этот процесс более подробнее: My Diagram

  1. Делаем fork
  2. Клонируем форкнутый репозиторий к себе
  3. Чтобы обновить свой форк на github нужно локально сделать fetch upstream с оригинального репозитория(добавив git remote add upstream https://...) а потом сделать
  4. 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

# решил посмотреть не появилось ли что новое в репо
git fetch
# увидели что второй dev создал ветку в origin, поэтому через --track создаем ветку и отслеживаем ее
git branch --track user2 origin/user2
git pull
# потом уже можно делать git diff HEAD..user2, git merge и тд