Как управление распределенным исходным кодом Git? - PullRequest
7 голосов
/ 03 марта 2010

Я новичок в Git с опытом работы с UNIX SCCS и Microsoft Visual SourceSafe. Я только изучаю Git, и у меня, кажется, огромный и болезненный урок обучения. Я уже видел, как Git удаляет все файлы данных, которые я не передал, что касается меня. (То, как утилита может удалять файлы данных без предупреждения, мне не подходит).

Линус Торвальдс в своем видео о Git утверждает, что Git распространяется, рекламирует преимущества распространения, но кроме того, что у каждого есть копия (клон) источника, на самом деле не объясняется, как работает распространение.

Как Git помогает распространению? Как Git помогает восстановить потерянные файлы? Как работает дистрибутив Git? Могу ли я найти, где были распространены файлы? Есть ли руководство по распространению Git?

Заранее спасибо!

Ответы [ 4 ]

3 голосов
/ 03 марта 2010

Читать это: http://www.newartisans.com/2008/04/git-from-the-bottom-up.html


Что касается других ваших вопросов:

Как работает Git?

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

Как работает дистрибуция?

Поскольку все хранилища могут быть серверами, разные хранилища могут сравнивать свои деревья и объекты и определять, какие изменения происходят между текущим состоянием такого хранилища и другим. Таким образом, они могут выдвигать / извлекать из других хранилищ.

Как это помогает?

Если вы не видите, как это может вам помочь, используйте MVSS.


Я думаю, что может быть проблема со словарем. Распространение не доставка. Распространение Git означает, что каждый репозиторий является сервером. Это не значит, что он будет отслеживать, где он был клонирован (хотя ваш собственный репозиторий может хранить список удаленных репозиториев, из которых можно извлекать данные из / push).

Прочитайте PDF, на который я сделал ссылку. Затем создайте репозиторий github, следуя их указаниям. Fork чей-либо репозиторий, любой, просто чтобы посмотреть, как он работает.

1 голос
/ 03 марта 2010

Git и другие DVCS, по сути, "приносят" весь репозиторий пользователю. Когда у меня есть рабочая копия git, у меня также есть весь репозиторий локально на моем жестком диске. Никто другой не имеет к нему доступа, но я могу поделиться им с помощью различных инструментов и методов, предоставляемых системой git.

Другие системы, такие как SVN (о чем Линус упоминает в видео), имеют весь репозиторий на одном сервере. Каждый толкает и тянет с этого сервера.

Опять же, глядя на git, мои коммиты изолированы от моего компьютера. Когда я буду готов к тому, что другие получат их, я каким-то образом «публикую» свои добавления - возможно, на центральном сервере, таком как SVN, но это только один вариант. Я мог бы отправить вам свои изменения по электронной почте.

Предотвращение потери данных

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

Сравните это с SVN (или другими центральными репозиториями), если вы потеряете жесткий диск сервера, вам придется восстановить репо из последней резервной копии , если у вас есть резервная копия . Это означало бы, что кому-то нужно управлять сервером и обеспечивать резервное копирование и т. Д. DVCS, в некотором смысле, делает это по своей природе.

Конечно, существует также «потеря данных» из-за таких ошибок, как случайное удаление файла, но это относится ко всем VCS.

1 голос
/ 03 марта 2010

Git и Mercurial следуют очень похожим образцам при работе с распределенной природой SCM. Я не могу говорить с хорошими учебниками по Git, но есть несколько замечательных работ на Mercurial.

Понимание Mercurial - Здесь есть хорошая информация о точном вопросе, который вы задаете ... что означает его распространение?

Mercurial Book - для более углубленных исследований.

0 голосов
/ 03 марта 2010

Вы, вероятно, перешли на другую ветку. Запустите git branch, чтобы увидеть, какие у вас ветви, затем git co <branchname>.

Лично я действительно ненавижу мерзавца. Большая кривая обучения и странный интерфейс командной строки. Но сейчас это крутой выбор. Так что наслаждайтесь! О да, не изучайте VSS, если у вас тоже нет, вы выучите ДЕЙСТВИТЕЛЬНО ДЕЙСТВИТЕЛЬНО вредные привычки VSS - это все, что не должно быть в системе контроля версий.

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