Я только продолжаю читать то, что прочитал на SO, так что простите, но все, что я прочитал, говорит о том, что одним из главных преимуществ Git перед Subversion является то, что Git предоставляет весь исходный код разработчику локально, не делая никаких действий по сервер.
С моим ограниченным использованием SVN и TortoiseSVN у меня был весь исходный код, или, по крайней мере, я так думал. Например, у меня есть сайт. Я загружаю это в SVN. Я все еще работаю на своем сайте, не так ли? Если кто-то отправляет изменение, а я не подключен, не имеет значения, был ли у меня Git или нет, пока я не подключусь к серверу.
Не понимаю. Я не прошу перефразировать одно против другого, кроме этого пункта.
Ответы:
Предположение, которое вы подвергаете сомнению, действительно неверно:
И с Subversion, и с Git у вас есть свой исходный код локально. С Git у вас есть и ваш исходный код, и хранилище на вашем локальном компьютере.
Это выглядит примерно так.
Subversion:
Ваш код <-> Репозиторий
Git:
Ваш код <-> Ваш локальный репозиторий <-> Удаленный репозиторий (... <-> другой удаленный репозиторий и т. Д.)
Одно из преимуществ, которое вы получаете от этой структуры, заключается в том, что вы все еще можете использовать контроль исходного кода и фиксировать свои локальные изменения в своем локальном репозитории, не нарушая работу других членов группы (с которыми вы совместно используете удаленный репозиторий).
С Subversion вам придется либо рискнуть нарушить сборку для других людей, либо подвергнуться длительному локальному развитию без какого-либо контроля над исходным кодом, который заканчивается огромным коммитом (или, скорее, возвратом).
С Git, с другой стороны, вы можете свободно вносить эти изменения в свой локальный репозиторий, просматривать журналы и сравнения или свои изменения, и только когда вы чувствуете, что готовы поделиться с командой, отправьте изменения из локального хранилище для удаленного.
источник
Git или Mercurial хранят весь ваш репозиторий локально со всеми ревизиями и именованными ветками. Subversion хранит только одну - обычно Head Revision. Таким образом, с Git и Mercurial вы можете получить доступ ко всему репозиторию (т.е. к вашему текущему исходному коду и его истории), даже когда ваша сеть выходит из строя с SVN, вы ограничены последней ревизией, до которой вы обновились.
источник
Краткий ответ таков: с git у вас есть весь ваш исходный код, с подрывной версией у вас есть вся самая последняя версия вашего исходного кода.
Git хранит копию всей истории вашего хранилища локально. С Subversion вся история находится на сервере.
источник
Я думаю, что вы можете понять, что с SVN все ваши действия требуют связи с сервером, а GIT - нет. С SVN, если вы хотите ветвиться, вы ветвитесь на сервере и разворачиваете эту ветвь. С помощью GIT вы можете создать локальную ветку, даже не имея «сервера» об этом знать.
Вы правы, говоря, что у вас есть исходный код как с SVN, так и с GIT, но с GIT необязательно должен быть централизованный сервер, который также содержит исходный код. С GIT вы можете быть ЕДИНСТВЕННЫМ человеком с исходным кодом, но все же сможете выполнять все функции, которые вы выполняли бы с типичным VCS.
Я слышал аргументы против GIT, и я думаю, что это может помочь в вашем вопросе, сказав, что, поскольку вы не обязаны фиксировать в центральном репо, вы владеете своим исходным кодом до тех пор, пока не подтвердите и не отправите его на свой сервер, если у вас есть один. В SVN единственный способ контроля версий - это фиксация на сервере, но с помощью GIT вы можете потенциально хранить все на своем локальном компьютере, и если что-то пойдет не так, вы «можете потерять все», даже если бы вы могли так же легко потерять все ваши изменения с SVN, если вы не зафиксировали, и ваш жесткий диск тоже рухнул.
источник
Если вы толкаете ежедневно, то риск должен быть небольшим. Но если вы вынуждены выполнять ежедневную фиксацию на сервере SVN, то в конце дня вы можете сделать все за один большой набор изменений, который не разделяет каждое изменение на маленькие шаги. С git вам рекомендуется делать несколько небольших коммитов. При нажатии, если объединение требуется, чем попытаться объединить и нажать. Если вы не можете выполнить слияние в данный момент, вы можете перейти в новую ветку или другой репозиторий на сервере.
источник