Как внести изменения в хранилище одновременно с кем-то еще? - PullRequest
0 голосов
/ 28 февраля 2012

Я довольно новичок в Git. Прямо сейчас у меня есть только основная ветвь для хранилища. Я начинаю сотрудничать с другим человеком, и я очень озадачен тем, как я могу вносить изменения одновременно с этим человеком. Я использую Tower, поэтому мне не нужно ничего изучать в командной строке - я просто ищу описание процесса.

Мой инстинкт в том, чтобы у каждого были свои ветви, над которыми мы работаем отдельно. Это правильный подход? Должны ли мы просто объединить эти ветви с нашим мастером, когда работа будет завершена?

Допустим, этот другой человек вносит изменения и передает их в основную ветку, пока я работаю над чем-то другим в своей ветке - как мне объединить его работу с моей собственной?

Ответы [ 3 ]

5 голосов
/ 28 февраля 2012

Если вы оба работаете в одной и той же ветке, и он отправляет свои изменения, вы не сможете их сдвинуть. Но то, что вы можете сделать, это вставить изменения в вашу локальную копию, которая объединит ваши и его изменения. Если есть какие-то конфликты, вам придется разрешать их вручную. Затем вы можете отправить результат этого слияния, который будет содержать оба набора изменений.

В общем, вероятно, не имеет смысла иметь одну ветку для вас и одну для него. Имеет смысл создать «ветви функций» . Если вы работаете над функцией A, создайте для нее ветку. Когда вы закончите, объедините его обратно с мастером. Это позволяет, например, исправлять аварийные исправления, даже если ваша функция не завершена.

2 голосов
/ 28 февраля 2012

Вам необходимо pull обновить merging их с вашими изменениями (возможно, с разрешением conflicts), прежде чем вы сможете push внести свои изменения в remote, если он отклонился (у кого-то еще pushed) отв последний раз, когда вы pulled.

Это , а не , уникальное для Git, каждая VCS требует, чтобы вы извлекали изменения, обрабатывали слияния и конфликты, прежде чем вы сможете перейти в центральный / удаленный репозиторий.,

В этом рабочем процессе нет ничего волшебного.

Разница с D (присваиваемой) VCS, такой как Git, заключается в том, что каждый репозиторий является удаленным , и идея центрального репозитория заключается всоглашение, в отличие от CVS или Subversion (и других, которые централизованы).

Git действительно очень хорошо справляется со сложным объединением, поэтому он минимизирует конфликты в большинстве случаев.

2 голосов
/ 28 февраля 2012

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

...