Как предполагается, что удаленный репозиторий синхронизируется с локальными репозиториями в GIT? - PullRequest
1 голос
/ 17 февраля 2012

В настоящее время я использую git для проекта, в котором участвуют два участника (я и мой друг).Итак, я сделал следующее:

Я создал репозиторий на машине, которая всегда доступна любому компьютеру в нашей локальной сети.

Мы оба клонировали этот репозиторий в наши соответствующие локальные машины, создавая локальные репозитории,

Теперь предположим, что в один момент времени (когда все три копии репозитория находятся на одной и той же стадии), я разветвляю ветку и начинаю некоторую разработку в этой ветке.Я помещаю эти изменения на удаленный компьютер и вижу, что новая ветвь автоматически создается на удаленном компьютере.

На другом компьютере я помещаю эту ветвь в новую локальную ветвь с тем же именем, чтобы они все были вснова то же самое состояние.

Теперь, когда я закончу с этой веткой ветвления и хочу, чтобы она слилась с мастером, я просто сделал извлечение мастеру и выполнил git merge my_branch.Теперь, как я могу отразить это изменение в глобальном хранилище и другом локальном хранилище?Придется ли мне тоже вводить команды слияния?Или есть какой-то способ толкать и тянуть так, чтобы слияния автоматически синхронизировались?

Что такое философия мерзавца?Должны ли все локальные репозитории и глобальный репозиторий быть точно синхронизированными коммитом при коммите, чтобы деревья везде были абсолютно одинаковыми?Или же отдельные деревья могут быть разными, и какие ветки нужно извлекать из пульта соответственно?

(Я изучил GIT, ища команды для того, что мне нужно сделать, однако я очень смущен тем, как это должно работать)

Удаленный репозиторий, который я создал, был пустым репозиторием

Ответы [ 5 ]

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

После того, как вы слились с мастером, используйте git push, чтобы перенести это слияние в ваш исходный репозиторий, как вы это делали с любым другим коммитом. Вашему другу потребуется git pull, чтобы получить ваши изменения, но, пока в источнике нет ничего нового, и ваш друг не внес никаких изменений в мастер в своей собственной копии, никаких дополнительных слияний не потребуется.

Хранилища не всегда будут точно синхронизированы; это один из ключевых отличий распределенной VCS.

1 голос
/ 17 февраля 2012

(я выучил GIT, ища команды для того, что мне нужно, но я очень смущен тем, как это должно работать)

Я очень, очень рекомендую вам принятьвремя хотя бы пролистать книгу progit.org .В нем много информации и приятной графики, объясняющей концепции ветвления и коммитов.

Или есть какой-то способ толкать и тянуть так, чтобы слияния автоматически синхронизировались?

Если вы хотите , автоматически нажмите от одного из ваших локальная ветвится на удаленную ветвь, есть инструменты, которые могут помочь (например, git post hooks).Тем не менее, я бы с уверенностью сказал, что это , а не решение, которое соответствует потребностям каждого - вот ссылка на связанный вопрос , который может оказаться полезным.

РЕДАКТИРОВАТЬ:

Что такое философия Git?Должны ли все локальные репозитории и глобальный репозиторий быть точно синхронизированными коммитом при коммите, чтобы деревья везде были абсолютно одинаковыми?Или отдельные деревья могут быть разными, и, соответственно, нужно извлекать какие-либо ветви с удаленного устройства?

Git - это не сервер-клиент SCM, а распределенная система контроля версий - лечениеGit так же, как вы, скажем, CVS или SVN не всегда правильный подход.Рабочий процесс, который довольно популярен в SO, можно найти здесь - есть немало связанных вопросов, которые могут оказаться полезными при разработке вашего собственного рабочего процесса. (1) (2)

1 голос
/ 17 февраля 2012

Это в основном ситуация и в моем офисе (репозиторий git на компьютере каждого разработчика и один в сети компании.

Вам не нужно повторно объединять свои изменения после того, как вы 'Мы объединили их в ваше master. Во-первых, вам нужно убедиться, что центральное репо было создано с помощью

git --bare init

Затем, когда кто-то хочет объединить изменения в основное репо, они делают git pull (чтобы получить какие-либо изменения, которые произошли с ним с момента их последнего коммита; в этом случае вам может потребоваться выполнить некоторое слияние по окончании) с последующим git push (после разрешения конфликтов, очевидно). Результатом является новое слияниекоммит на "центральном" сервере.

Я не знаю, является ли это Git Way, но пока он работает для нас.

0 голосов
/ 17 февраля 2012

После слияния нужно нажать на изменения. Do git push

0 голосов
/ 17 февраля 2012

Теперь, как мне отразить это изменение в глобальном репозитории и другом локальном репозитории? Придется ли мне тоже вводить команды слияния? Или есть какой-то способ толкать и тянуть так, чтобы слияния автоматически синхронизировались?

Существует команда git push.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...