Почему Git лучше Subversion?
Я использую Subversion несколько лет, а после использования 9X_git-commands SourceSafe я просто обожаю Subversion. В сочетании 9X_subversion с TortoiseSVN я даже представить не могу, что может 9X_svn быть лучше.
Тем не менее, растет число разработчиков, утверждающих, что 9X_svn у Subversion есть проблемы и что нам следует 9X_svn перейти на новое поколение распределенных 9X_subversion систем контроля версий, таких как Git.
Чем Git 9X_subversion лучше Subversion?
Ответ #1
Ответ на вопрос: Почему Git лучше Subversion?
Git не лучше Subversion. Но и не хуже. Это 9X_subversion другое.
Ключевое отличие в том, что он децентрализован. Представьте, что 9X_git вы разработчик в дороге, вы разрабатываете 9X_svn на своем ноутбуке и хотите иметь систему 9X_git управления версиями, чтобы иметь возможность 9X_svn вернуться на 3 часа назад.
Проблема с Subversion: репозиторий 9X_svn SVN может находиться в месте, до которого 9X_git-commands вы не можете добраться (в вашей компании, и 9X_git-commands у вас нет Интернета в данный момент), вы 9X_git не можете зафиксировать. Если вы хотите 9X_subversion сделать копию своего кода, вы должны буквально 9X_subversion скопировать/вставить его.
С Git у вас нет 9X_git этой проблемы. Ваша локальная копия является 9X_git репозиторием, и вы можете зафиксировать 9X_git его и получить все преимущества системы 9X_subversion управления версиями. Когда вы восстановите 9X_subversion подключение к основному репозиторию, вы 9X_git сможете зафиксировать его.
На первый взгляд 9X_git-commands это выглядит хорошо, но просто имейте в 9X_subversion виду дополнительную сложность этого подхода.
Git 9X_svn кажется «новой, блестящей, крутой» вещью. Это 9X_git ни в коем случае не плохо (в конце концов, Линус 9X_svn написал это для разработки ядра Linux), но 9X_git-commands я чувствую, что многие люди прыгают на поезде 9X_subversion «Распределенного контроля версий» только 9X_git-commands потому, что он новый и написан Линусом Торвальдсом, на 9X_git-commands самом деле не зная, почему / если это лучше.
У 9X_git-commands Subversion есть проблемы, но есть и Git, Mercurial, CVS, TFS 9X_git или что-то еще.
Редактировать: Итак, этому ответу уже год, и 9X_git он по-прежнему вызывает много голосов, поэтому 9X_subversion я подумал, что добавлю еще несколько объяснений. За 9X_git последний год, прошедший с момента написания 9X_git-commands этой статьи, Git получил большой импульс 9X_subversion и поддержку, особенно после того, как такие 9X_git сайты, как GitHub, действительно стали популярными. В 9X_subversion настоящее время я использую как Git, так 9X_svn и Subversion, и я хотел бы поделиться своим 9X_git личным мнением.
Во-первых, Git может поначалу 9X_svn сбивать с толку при децентрализованной работе. Что 9X_subversion такое пульт? и Как правильно настроить начальный 9X_git-commands репозиторий? - это два вопроса, которые 9X_svn возникают в начале, особенно по сравнению 9X_svn с простым "svnadmin create" в SVN, "git 9X_git-commands init" в Git может принимать параметры --bare 9X_git и --shared, что кажется "правильным" способом 9X_svn настройки централизованного репозиторий. Для 9X_subversion этого есть причины, но это добавляет сложности. Документация 9X_svn команды «checkout» очень сбивает с толку 9X_subversion людей, которые переходят — «правильный» способ 9X_git кажется «git clone», в то время как «git 9X_git-commands checkout», кажется, переключает ветки.
Git 9X_svn ДЕЙСТВИТЕЛЬНО сияет, когда вы децентрализованы. У 9X_git-commands меня есть сервер дома и ноутбук в дороге, и 9X_svn SVN здесь просто не работает. С SVN я не 9X_git могу иметь локальный контроль версий, если 9X_git я не подключен к репозиторию (да, я знаю 9X_svn о SVK или о способах копирования репо). В 9X_git-commands Git это режим по умолчанию. Однако это дополнительная 9X_git команда (git commit фиксирует локально, тогда 9X_subversion как git push origin master отправляет основную 9X_subversion ветку на удаленный сервер с именем «origin»).
Как 9X_subversion сказано выше: Git добавляет сложности. Два 9X_subversion режима создания репозиториев: проверка и 9X_subversion клонирование, фиксация и отправка... Вы 9X_svn должны знать, какие команды работают локально, а 9X_git какие работают с «сервером» (я предполагаю, что 9X_subversion большинству людей по-прежнему нравится центральный 9X_git-commands «мастер-репозиторий»). ).
Кроме того, инструментарий 9X_git по-прежнему недостаточен, по крайней мере, для 9X_git Windows. Да, есть надстройка Visual Studio, но 9X_subversion я все еще использую git bash с msysgit.
Преимущество 9X_git-commands SVN в том, что его НАМНОГО проще освоить: есть 9X_git ваш репозиторий, все изменения к нему, если 9X_git-commands вы знаете, как создавать, фиксировать и 9X_git-commands проверять, и вы готовы к работе, и можете 9X_git собирать такие вещи, как ветвление, обновление 9X_git и т. д. позже.
Преимущество Git в том, что 9X_subversion он НАМНОГО лучше подходит, если некоторые 9X_git-commands разработчики не всегда подключены к главному 9X_git-commands репозиторию. Кроме того, это намного быстрее, чем 9X_git SVN. И из того, что я слышал, поддержка 9X_git-commands ветвления и слияния намного лучше (чего 9X_svn и следовало ожидать, поскольку это основные 9X_git-commands причины, по которым это было написано).
Это 9X_git-commands также объясняет, почему о нем так много 9X_git говорят в Интернете, поскольку Git идеально 9X_git подходит для проектов с открытым исходным 9X_subversion кодом: просто создайте его форк, зафиксируйте 9X_git-commands ваши изменения в своем собственном форке, а 9X_svn затем попросите мейнтейнера первоначального 9X_subversion проекта внести ваши изменения. С Git это 9X_git просто работает. Действительно, попробуйте 9X_subversion на Github, это волшебство.
Я также вижу мосты 9X_svn Git-SVN: центральный репозиторий представляет 9X_git-commands собой репозиторий Subversion, но разработчики 9X_subversion локально работают с Git, а затем мост отправляет 9X_git свои изменения в SVN.
Но даже с этим длинным 9X_git дополнением я по-прежнему придерживаюсь 9X_svn своей основной идеи: Git не лучше и не хуже, он 9X_git просто другой. Если у вас есть потребность 9X_svn в «Offline Source Control» и желание потратить 9X_git-commands дополнительное время на его изучение, это 9X_svn фантастика. Но если у вас строго централизованный 9X_subversion контроль версий и/или вы изо всех сил пытаетесь 9X_git внедрить контроль версий в первую очередь, потому 9X_git что ваши коллеги не заинтересованы, тогда 9X_git простота и превосходный инструментарий (по 9X_subversion крайней мере, в Windows) SVN сияют.
- Мой опыт работы с git - не совсем «откровение, изменяющее жизнь». Я считаю, что это отличный инструмент, когда он работает, а когда нет, тогда он кажется довольно неотшли ...
Ответ #2
Ответ на вопрос: Почему Git лучше Subversion?
С Git вы можете делать практически все в 9X_git-commands автономном режиме, потому что у каждого 9X_subversion есть свой собственный репозиторий.
Создавать 9X_subversion ветки и объединять ветки очень просто.
Даже 9X_git если у вас нет прав на фиксацию проекта, вы 9X_svn все равно можете иметь свой собственный 9X_git-commands онлайн-репозиторий и публиковать «push-запросы» для 9X_svn ваших исправлений. Все, кому нравятся ваши 9X_git-commands патчи, могут включить их в свой проект, в 9X_subversion том числе и официальные сопровождающие.
Разветвить 9X_git проект, модифицировать его и при этом продолжать 9X_svn сливать исправления ошибок из ветки HEAD 9X_git – это тривиально.
Git работает для разработчиков 9X_git-commands ядра Linux. Это означает, что он действительно 9X_svn быстрый (так и должно быть) и масштабируется 9X_git-commands до тысяч участников. Git также использует 9X_git-commands меньше места (до 30 раз меньше места для 9X_svn репозитория Mozilla).
Git очень гибкий, очень 9X_svn TIMTOWTDI (есть несколько способов сделать 9X_subversion это). Вы можете использовать любой рабочий 9X_subversion процесс, который захотите, и Git его поддержит.
Наконец, есть 9X_svn GitHub, отличный сайт для размещения ваших репозиториев 9X_git Git.
Недостатки Git:
- его намного сложнее изучить, потому что в Git больше концепций и больше команд.
- ревизии не имеют номеров версий, как в subversion
- многие команды Git зашифрованы, а сообщения об ошибках очень неудобны для пользователя
- ему не хватает хорошего графического интерфейса (например, великолепного TortoiseSVN)
- Я согласен. Использую как SVN, так и GIT (примерно с 6 месяцев). Честно говоря, я люблю git намного больше, чем SVN. Просто нужно время, чтобы этому научи ...
Ответ #3
Ответ на вопрос: Почему Git лучше Subversion?
Другие ответы хорошо объяснили основные 9X_git-commands функции Git (и это здорово). Но также есть 9X_git так много маленьких способов, которыми Git ведет 9X_git-commands себя лучше и помогает сохранить мою жизнь 9X_subversion более разумной. Вот некоторые из мелочей:
- В Git есть команда «очистить». SVN отчаянно нуждается в этой команде, учитывая, как часто она будет выгружать лишние файлы на ваш диск.
- В Git есть команда bisect. Это приятно.
- SVN создает каталоги .svn в каждой отдельной папке (Git создает только один каталог .git). Каждый сценарий, который вы пишете, и каждый выполняемый вами grep должны быть написаны так, чтобы игнорировать эти каталоги .svn. Вам также понадобится целая команда («svn export»), чтобы получить нормальную копию ваших файлов.
- В SVN каждый файл и папка могут относиться к разным ревизиям или ветвям. Поначалу кажется, что иметь такую свободу приятно. Но на самом деле это означает, что существует миллион различных способов, с помощью которых ваша местная касса может полностью испортиться. (например, если "svn switch" не работает на полпути или вы неправильно ввели команду). И самое страшное: если вы когда-нибудь попадете в ситуацию, когда часть ваших файлов идет из одного места, а часть из другого, то "svn status" подскажет, что все в норме. Вам нужно будет сделать «svn info» для каждого файла/каталога, чтобы узнать, насколько странные вещи. Если «git status» говорит вам, что все нормально, то вы можете быть уверены, что все действительно нормально.
- Вы должны сообщать SVN всякий раз, когда вы что-то перемещаете или удаляете. Git сам разберется.
- Игнорировать семантику проще в Git. Если вы проигнорируете шаблон (например, *.pyc), он будет проигнорирован для всех подкаталогов. (Но если вы действительно хотите игнорировать что-то только для одного каталога, вы можете). С SVN кажется, что нет простого способа игнорировать шаблон во всех подкаталогах.
- Еще один пункт, связанный с игнорированием файлов. Git позволяет иметь «частные» настройки игнорирования (используя файл .git/info/exclude), которые не повлияют ни на кого другого.
- Объявление. 7. В современном git вы также можете настроить индивидуальное игнорирование для каждого ...
Ответ #4
Ответ на вопрос: Почему Git лучше Subversion?
«Why Git is Better than X» описывает различные плюсы и минусы Git 9X_svn по сравнению с другими SCM.
Кратко:
- Git отслеживает контент, а не файлы
- Ветви легкие, а слияние легко, я имею в виду действительно легко.
- Он распределен, в основном каждый репозиторий - это филиал. На мой взгляд, гораздо проще разрабатывать одновременно и совместно, чем с Subversion. Это также делает возможной разработку офлайн.
- Он не требует никакого рабочего процесса, как видно из the above linked website, с Git возможно множество рабочих процессов. Рабочий процесс в стиле Subversion легко имитировать.
- Репозитории Git намного меньше по размеру, чем репозитории Subversion. Есть только один каталог «.git», в отличие от десятков репозиториев «.svn» (обратите внимание на Subversion 1.7 и выше now uses a single directory, например Git.)
- Промежуточная область великолепна, она позволяет вам видеть изменения, которые вы фиксируете, фиксировать частичные изменения и выполнять различные другие действия.
- Хранение бесценно, когда вы занимаетесь «хаотической» разработкой или просто хотите исправить ошибку, пока вы все еще работаете над чем-то другим (в другой ветке).
- Вы можете переписать историю, что отлично подходит для подготовки наборов исправлений и исправления ваших ошибок (перед публикацией коммитов).
- … и многое другое.
Есть некоторые 9X_git недостатки:
- Для него пока не так много хороших графических интерфейсов. Это ново, а Subversion существует намного дольше, так что это естественно, поскольку в разработке находится несколько интерфейсов. Вот несколько хороших: TortoiseGit и GitHub for Mac.
-
Частичное извлечение / клонирование репозиториев в настоящий момент невозможно (я читал, что он находится в разработке). Однако есть поддержка подмодулей.Git 1.7+ supports sparse checkouts. - Это может быть труднее выучить, хотя я не обнаружил, что это так (около года назад). Git недавно улучшил свой интерфейс и стал довольно удобным для пользователя.
В самом упрощенном использовании 9X_git-commands Subversion и Git почти одинаковы. Нет большой 9X_git-commands разницы между:
svn checkout svn://foo.com/bar bar
cd bar
# edit
svn commit -m "foo"
и
git clone git@github.com:foo/bar.git
cd bar
# edit
git commit -a -m "foo"
git push
На самом деле Git лучше всего 9X_subversion работает с другими людьми.
- Вы говорите, что GIT отслеживает контент, а не файлы. Я обнаружил, что SVN также делает это: я просто внес изменения в файл и сохранил его. SVN показал файл к ...
Ответ #5
Ответ на вопрос: Почему Git лучше Subversion?
Google Tech Talk: Линус Торвальдс на git
http://www.youtube.com/watch?v=4XpnKHJAok8
Страница 9X_subversion сравнения Git Wiki
- Этот тоже неплохой. Это от одного из коммитеров git, и о ...
Ответ #6
Ответ на вопрос: Почему Git лучше Subversion?
Ну, раздали. Тесты показывают, что он значительно 9X_git быстрее (учитывая его распределенный характер, такие 9X_subversion операции, как diff и журналы, все локальны, поэтому, конечно, в 9X_svn этом случае он невероятно быстрее), а рабочие 9X_subversion папки меньше (что до сих пор поражает меня).
Когда 9X_git вы работаете над subversion или любой другой 9X_git-commands клиент/серверной системой управления версиями, вы, по 9X_git сути, создаете рабочие копии на своем компьютере, извлекая версии. Это 9X_git-commands представляет собой моментальный снимок того, как 9X_git-commands выглядит репозиторий. Вы обновляете свою 9X_svn рабочую копию через обновления, а репозиторий 9X_git-commands обновляете через коммиты.
При распределенном 9X_git контроле версий у вас есть не моментальный 9X_svn снимок, а вся кодовая база. Хотите сделать 9X_git diff с 3-месячной версией? Нет проблем, 3-месячная 9X_git-commands версия все еще на вашем компьютере. Это 9X_git-commands не только означает, что все работает намного 9X_subversion быстрее, но даже если вы отключены от центрального 9X_subversion сервера, вы все равно можете выполнять многие 9X_svn операции, к которым вы привыкли. Другими 9X_git словами, у вас есть не только моментальный 9X_subversion снимок данной ревизии, но и вся кодовая 9X_subversion база.
Можно подумать, что Git займет кучу 9X_git места на вашем жестком диске, но судя по 9X_git-commands паре тестов, которые я видел, на самом деле 9X_git он занимает меньше. Не спрашивайте меня 9X_git-commands как. Я имею в виду, он был построен Линусом, он, я 9X_subversion думаю, кое-что знает о файловых системах.
- Я не удивлен, что "рабочие папки" git (т.е. репозитории) меньше, чем рабочие копии svn, потому что даже репозитории svn мень ...
Ответ #7
Ответ на вопрос: Почему Git лучше Subversion?
Основные моменты, которые мне нравятся в 9X_subversion DVCS:
- Вы можете совершать сломанные вещи. Это не имеет значения, потому что другие люди не увидят их, пока вы не опубликуете. Время публикации отличается от времени фиксации.
- Благодаря этому вы можете чаще совершать коммиты.
- Вы можете объединить полную функциональность. У этого функционала будет своя ветка. Все коммиты этой ветки будут связаны с этим функционалом. Вы можете сделать это с помощью CVCS, однако по умолчанию используется DVCS.
- Вы можете выполнить поиск в своей истории (найти, когда функция изменилась)
- Вы можете отменить пул, если кто-то облажался в основном репозитории, вам не нужно исправлять ошибки. Просто очистите слияние.
- Когда вам нужен контроль версий в любом каталоге, выполните: git init. и вы можете зафиксировать, отменить изменения и т.д...
- Это быстро (даже на Windows)
Основная причина относительно большого 9X_svn проекта — улучшенная коммуникация, созданная 9X_git пунктом 3. Остальное — приятные бонусы.
Ответ #8
Ответ на вопрос: Почему Git лучше Subversion?
Самое смешное: Я размещаю проекты в репозиториях 9X_git Subversion, но получаю к ним доступ через 9X_git команду Git Clone.
Пожалуйста, прочтите Develop with Git on a Google Code Project
Хотя 9X_svn код Google на родном языке говорит Subversion, вы 9X_git можете легко использовать Git во время 9X_svn разработки. В поисках "git svn" предполагает, что 9X_subversion эта практика широко распространены, и 9X_git-commands мы также призываем вас поэкспериментировать 9X_svn с ним.
Использование Git в репозитории Svn 9X_git-commands дает мне следующие преимущества:
- Могу работать распределен на нескольких машины, фиксирующие и вытягивающие из и к ним
- У меня есть центральный
backup/public
репозиторий svn, который могут проверить другие - И они могут свободно использовать Git для себя
- это немного устарело, код Google работает постоянно, по ...
Ответ #9
Ответ на вопрос: Почему Git лучше Subversion?
Все ответы здесь ожидаемы, ориентированы 9X_git-commands на программистов, однако что произойдет, если 9X_git ваша компания использует контроль версий 9X_git вне исходного кода? Существует множество 9X_svn документов, не являющихся исходным кодом, для 9X_git которых используется контроль версий, и 9X_git они должны находиться рядом с кодом, а не 9X_git-commands в другой CMS. Большинство программистов 9X_svn не работают изолированно - мы работаем для 9X_subversion компаний как часть команды.
Помня об этом, сравните 9X_subversion простоту использования как клиентских инструментов, так 9X_subversion и обучения между Subversion и git. Я не 9X_git вижу сценария, при котором любую распределенную 9X_subversion систему контроля версий было бы проще использовать 9X_svn или объяснить непрограммисту. Мне бы хотелось, чтобы 9X_svn меня доказали, что я ошибаюсь, потому что 9X_git тогда я смогу оценить git и действительно 9X_git-commands надеяться, что он будет принят людьми, которым 9X_svn нужен контроль версий, но не программистами.
Даже 9X_subversion в этом случае, если бы руководство спросило, почему 9X_git-commands мы должны перейти от централизованной к 9X_git распределенной системе контроля версий, мне 9X_svn было бы трудно дать честный ответ, потому 9X_git что он нам не нужен.
Отказ от ответственности: я 9X_svn рано заинтересовался Subversion (около v0.29), поэтому, очевидно, я 9X_git-commands предвзято, но компании, в которых я работал 9X_git-commands с того времени, получают пользу от моего 9X_svn энтузиазма, потому что я поощрял и поддерживал 9X_subversion его использование. . Я подозреваю, что именно 9X_git так и происходит с большинством компаний-разработчиков 9X_git программного обеспечения. Учитывая, что 9X_subversion так много программистов подключаются к git, мне 9X_subversion интересно, сколько компаний упустят преимущества 9X_svn использования контроля версий вне исходного 9X_git-commands кода? Даже если у вас есть отдельные системы 9X_git-commands для разных команд, вы упускаете некоторые 9X_git-commands преимущества, такие как (унифицированная) интеграция 9X_git-commands отслеживания проблем, при этом увеличивая 9X_git-commands требования к обслуживанию, оборудованию 9X_svn и обучению.
- @inger Я не думаю, что вы можете сказать «это единственная веская причина», поддержка инструментов AFAIK для Subversion намного превосходит Git, например TortoiseSVN и ин ...
Ответ #10
Ответ на вопрос: Почему Git лучше Subversion?
Subversion по-прежнему является гораздо 9X_git более используемой системой контроля версий, а 9X_git-commands это означает, что она имеет лучшую поддержку 9X_git-commands инструментов. Вы найдете зрелые плагины 9X_subversion SVN практически для любого IDE, а также доступны 9X_subversion хорошие расширения проводника (например, TurtoiseSVN). В 9X_svn остальном я должен согласиться с Michael: Git не 9X_git лучше и не хуже Subversion, он другой.
Ответ #11
Ответ на вопрос: Почему Git лучше Subversion?
Одна из вещей, которые меня раздражают в 9X_svn SubVersion, это то, что она помещает свою 9X_svn папку в каждый каталог проекта, тогда как 9X_git-commands git помещает только одну в корневой каталог. Это 9X_subversion не такое большое дело, но такие мелочи складываются.
Конечно, в 9X_svn SubVersion есть Tortoise, что [обычно] очень 9X_subversion приятно.
- каталоги .svn скоро исчезнут, вероятно, с v1.7<p><span class=" ...
Ответ #12
Ответ на вопрос: Почему Git лучше Subversion?
David Richards WANdisco Blog on Subversion / GIT
Появление GIT привело к появлению поколения 9X_git фундаменталистов DVCS - «гиттеронов», которые 9X_svn считают все, кроме GIT, дерьмом. Похоже, Гиттероны 9X_svn думают, что разработка программного обеспечения 9X_git происходит на их собственном острове, и 9X_git-commands часто забывают, что в большинстве организаций 9X_git-commands работают не только старшие инженеры-программисты. Это 9X_git нормально, но это не так, как думает остальная 9X_git-commands часть рынка, и я рад доказать это: GIT, по 9X_svn последним данным, занимал менее трех процентов 9X_git-commands рынка, в то время как Subversion имеет около 9X_git-commands пяти миллионов пользователей и около половины 9X_svn из них. рынок в целом.
Проблема, которую 9X_svn мы видели, заключалась в том, что Гиттероны 9X_git-commands стреляли (дешево) по Subversion. Твиты типа 9X_git-commands «Subversion такая [медленная / дрянная / ограничительная 9X_subversion / плохо пахнет / смотрит на меня забавно], и 9X_git-commands теперь у меня есть GIT, и [в моей жизни 9X_git-commands все работает / моя жена забеременела / у 9X_git-commands меня появилась девушка после 30 лет попыток 9X_svn / Я выиграл шесть раз подряд на столе для 9X_git блэкджека]. Вы поняли.
- По иронии судьбы, Git был создан специально потому, что разработка программного обеспечения не ...
Ответ #13
Ответ на вопрос: Почему Git лучше Subversion?
Git также упрощает ветвление и слияние. В 9X_subversion Subversion 1.5 просто добавлено отслеживание 9X_git слияний, но Git все же лучше. С Git ветвление 9X_svn происходит очень быстро и дешево. Это делает 9X_git создание ветки для каждой новой функции 9X_subversion более осуществимой. О, и репозитории Git 9X_subversion очень эффективны с пространством для хранения 9X_subversion по сравнению с Subversion.
Ответ #14
Ответ на вопрос: Почему Git лучше Subversion?
Все дело в простоте использования/шагах, необходимых 9X_git-commands для того, чтобы что-то сделать.
Если я разрабатываю 9X_git-commands один проект на своем ПК/ноутбуке, git лучше, потому 9X_svn что его гораздо проще настроить и использовать. Вам 9X_subversion не нужен сервер, и вам не нужно постоянно 9X_svn вводить URL-адреса репозитория при слиянии.
Если 9X_git бы это было всего 2 человека, я бы сказал, что 9X_svn git также проще, потому что вы можете просто 9X_git-commands толкать и тянуть друг друга.
Как только вы 9X_subversion выйдете за рамки этого, я бы пошел на подрывную 9X_git деятельность, потому что в этот момент вам 9X_git-commands нужно настроить «выделенный» сервер или 9X_git-commands местоположение.
Вы можете сделать это так 9X_git же хорошо с git, как и с SVN, но преимущества 9X_subversion git перевешиваются необходимостью выполнять 9X_git-commands дополнительные шаги для синхронизации с 9X_svn центральным сервером. В SVN вы просто фиксируете. В 9X_subversion git вам нужно выполнить git commit, а затем 9X_svn git push. Дополнительный шаг раздражает 9X_git просто потому, что вы делаете его так много.
Преимущество 9X_subversion SVN также состоит в улучшении инструментов 9X_svn с графическим интерфейсом, однако экосистема 9X_git-commands git, похоже, быстро наверстывает упущенное, поэтому 9X_svn в долгосрочной перспективе я бы не стал 9X_svn об этом беспокоиться.
- Отделение фиксации от публи ...
Ответ #15
Ответ на вопрос: Почему Git лучше Subversion?
Easy Git имеет хорошую страницу, сравнивающую фактическое 9X_git-commands использование Git and SVN, которая даст вам представление 9X_git о том, что Git может делать (или делать 9X_svn проще) по сравнению с SVN. (Технически это 9X_svn основано на Easy Git, который представляет 9X_git-commands собой легковесную оболочку поверх Git.)
Ответ #16
Ответ на вопрос: Почему Git лучше Subversion?
Git и DVCS в целом отлично подходят для 9X_git разработчиков, которые много пишут код независимо 9X_git друг от друга, потому что у каждого есть 9X_git своя ветка. Однако, если вам нужны изменения 9X_svn от кого-то другого, он должен зафиксировать 9X_git-commands в своем локальном репо, а затем он должен 9X_git-commands передать этот набор изменений вам, или вы 9X_subversion должны получить его от нее.
Мои собственные 9X_git рассуждения также заставляют меня думать, что 9X_git-commands DVCS усложняет задачу контроля качества 9X_svn и управления релизами, если вы делаете такие 9X_subversion вещи, как централизованные релизы. Кто-то 9X_git-commands должен нести ответственность за выполнение 9X_git этого push/pull из репозитория всех остальных, разрешение 9X_subversion любых конфликтов, которые были бы разрешены 9X_svn во время первоначального коммита ранее, затем 9X_git выполнение сборки, а затем повторная синхронизация 9X_git-commands репозиториев всеми другими разработчиками.
Конечно, все 9X_git это можно решить с помощью человеческих 9X_svn процессов; DVCS просто сломала то, что было 9X_git-commands исправлено централизованным контролем версий, чтобы 9X_git обеспечить некоторые новые удобства.
- На самом деле, если вы посмотрите, что ядро Linux или сам проект git находится по ...
Ответ #17
Ответ на вопрос: Почему Git лучше Subversion?
Мне нравится Git, потому что он действительно 9X_git помогает общаться между разработчиками в 9X_subversion средних и больших командах. Как распределенная 9X_git система управления версиями, благодаря своей 9X_svn системе push/pull, она помогает разработчикам 9X_git создавать экосистему исходного кода, которая 9X_git-commands помогает управлять большим пулом разработчиков, работающих 9X_git-commands над одним проектом.
Например, вы доверяете 9X_svn 5 разработчикам и получаете коды только 9X_git из их репозитория. У каждого из этих разработчиков 9X_svn есть собственная сеть доверия, из которой 9X_git-commands они извлекают коды. Таким образом, разработка 9X_subversion основана на доверии разработчиков, где ответственность 9X_git-commands за код распределяется между сообществом 9X_svn разработчиков.
Конечно, есть и другие преимущества, которые 9X_subversion упоминаются здесь в других ответах.
Ответ #18
Ответ на вопрос: Почему Git лучше Subversion?
В нескольких ответах на это есть ссылки, но 9X_subversion я хочу выделить два момента:
1) Возможность 9X_git делать выборочные коммиты (например, git add --patch
). Если 9X_subversion ваш рабочий каталог содержит несколько изменений, которые 9X_git-commands не являются частью одного и того же логического 9X_subversion изменения, Git упрощает выполнение фиксации, включающей 9X_git только часть изменений. С Subversion это 9X_subversion сложно.
2) Возможность совершить фиксацию 9X_svn без публикации изменений. В Subversion любая 9X_git-commands фиксация немедленно становится общедоступной 9X_git и, следовательно, безотзывной. Это сильно 9X_subversion ограничивает способность разработчика «фиксировать 9X_subversion рано, фиксировать часто».
Git - это больше, чем 9X_svn просто VCS; это также инструмент для разработки 9X_git-commands патчей. Subversion - это просто VCS.
- К вопросу 1) Если вы используете TortoiseSVN, AnkhSVN и т. Д., То очень легко (тривиально) выбрать, какие файлы с изменениями необходимо зафиксировать. Re 2) Если вы не хотите, чтобы другие разработчики получали ваш код, создайте ветку, а затем о ...
Ответ #19
Ответ на вопрос: Почему Git лучше Subversion?
Я думаю, что с Subversion все в порядке 9X_svn ... пока вы не начнете объединяться ... или 9X_svn делать что-нибудь сложное ... или делать 9X_svn что-то, что Subversion считает сложным (например, выполнение 9X_svn запросов, чтобы узнать, какие ветки испортили 9X_git конкретный файл, а где изменение на самом деле исходит 9X_subversion от обнаружения копирования и вставки и т. д.) ...
Я 9X_git не согласен с победившим ответом, говоря, что 9X_svn основным преимуществом GIT является работа в автономном режиме 9X_svn - это, безусловно, полезно, но это больше 9X_svn похоже на дополнение для моего варианта 9X_git-commands использования. SVK тоже может работать в 9X_git автономном режиме, но для меня нет никаких 9X_svn сомнений в том, в какой из них потратить 9X_svn свое время на обучение).
Просто он невероятно 9X_git мощный и быстрый и, после того, как вы привыкли 9X_git к концепциям, очень полезен (да, в этом 9X_svn смысле: удобен для пользователя).
Подробнее 9X_subversion об истории слияния см. здесь: Using git-svn (or similar) *just* to help out with an svn merge?
Ответ #20
Ответ на вопрос: Почему Git лучше Subversion?
Благодаря тому, что ему не нужно постоянно 9X_git-commands связываться с центральным сервером, почти 9X_svn каждая команда выполняется менее чем за 9X_git-commands секунду (очевидно, git push/pull/fetch медленнее 9X_svn просто потому, что они должны инициализировать 9X_svn SSH-соединения). Ветвление намного проще 9X_svn (одна простая команда для ветвления, одна 9X_subversion простая команда для слияния)
Ответ #21
Ответ на вопрос: Почему Git лучше Subversion?
Мне очень нравится возможность управлять 9X_git-commands локальными ветвями моего исходного кода 9X_git-commands в Git, не запутывая воду в центральном репозитории. Во 9X_git-commands многих случаях я проверяю код с сервера 9X_git-commands Subversion и запускаю локальный репозиторий 9X_subversion Git, чтобы иметь возможность это сделать. Также 9X_git замечательно, что инициализация репозитория 9X_svn Git не загрязняет файловую систему множеством 9X_git-commands надоедливых папок .svn повсюду.
Что касается 9X_subversion поддержки инструментов Windows, TortoiseGit 9X_subversion очень хорошо справляется с основами, но 9X_svn я по-прежнему предпочитаю командную строку, если 9X_subversion я не хочу просматривать журнал. Мне очень 9X_svn нравится, как Tortoise {Git | SVN} помогает 9X_svn при чтении журналов фиксации.
Ответ #22
Ответ на вопрос: Почему Git лучше Subversion?
Это неправильный вопрос. Слишком легко сосредоточиться 9X_subversion на проблемах git и сформулировать аргумент 9X_git-commands о том, почему Subversion якобы лучше, по 9X_git крайней мере, для некоторых случаев использования. Тот 9X_git факт, что git был изначально разработан 9X_subversion как низкоуровневый конструктор для управления 9X_git-commands версиями и имеет барочный интерфейс, ориентированный 9X_subversion на разработчиков Linux, облегчает священным 9X_git-commands войнам получение поддержки и воспринимаемую 9X_git легитимность. Сторонники Git бьют по барабану 9X_git миллионами преимуществ рабочего процесса, которые 9X_git-commands парни из svn объявляют ненужными. Довольно 9X_svn скоро вся дискуссия оформляется как централизованное 9X_git-commands против распределенного, что служит интересам 9X_svn сообщества корпоративных инструментов svn. Эти 9X_git компании, которые обычно публикуют наиболее 9X_svn убедительные статьи о превосходстве подрывной 9X_svn деятельности на предприятии, зависят от 9X_subversion предполагаемой небезопасности git и готовности 9X_git-commands svn к предприятию для долгосрочного успеха 9X_svn своих продуктов.
Но вот в чем проблема: Subversion - это архитектурный тупик.
Принимая 9X_git-commands во внимание, что вы можете взять git и довольно 9X_subversion легко создать централизованную замену подрывной 9X_git версии, несмотря на то, что svn существует 9X_git-commands более чем в два раза дольше, так и не удалось 9X_git добиться даже базовой работы с отслеживанием 9X_git слияния где-либо так хорошо, как в git. Одна 9X_git-commands из основных причин этого - дизайнерское 9X_svn решение сделать ветки такими же, как каталоги. Я 9X_subversion не знаю, почему они пошли по этому пути 9X_git изначально, это, безусловно, очень упрощает 9X_git частичное оформление заказа. К сожалению, это 9X_git-commands также делает невозможным правильное отслеживание 9X_subversion истории. Теперь очевидно, что вы должны 9X_git использовать соглашения о компоновке репозитория 9X_git-commands Subversion для отделения ветвей от обычных 9X_git каталогов, а svn использует некоторые эвристики, чтобы 9X_subversion заставить вещи работать для повседневных 9X_svn случаев использования. Но все это лишь прикрытие 9X_git очень плохого и ограничивающего проектного 9X_git-commands решения на низком уровне. Возможность выполнять 9X_subversion сравнение по репозиторию (а не по каталогу) является 9X_git базовой и важной функцией для системы управления 9X_subversion версиями и значительно упрощает внутреннее 9X_git устройство, позволяя создавать более умные 9X_subversion и полезные функции поверх нее. Вы можете 9X_svn увидеть, сколько усилий было приложено для 9X_subversion расширения подрывной деятельности, и, тем 9X_git-commands не менее, насколько она отстает от нынешнего 9X_svn поколения современных VCS с точки зрения 9X_git фундаментальных операций, таких как разрешение 9X_svn слияния.
А теперь вот мой искренний и агностический 9X_git-commands совет всем, кто все еще считает, что Subversion 9X_git-commands достаточно хороша в обозримом будущем:
Subversion 9X_git никогда не догонит новые разновидности VCS, которые 9X_subversion извлекли уроки из ошибок RCS и CVS; это 9X_svn техническая невозможность, если они не переоборудовали 9X_git модель репозитория с нуля, но тогда это 9X_svn было бы не так, как svn, не так ли? Независимо 9X_git-commands от того, насколько вы считаете, что не обладаете 9X_git-commands возможностями современной VCS, ваше незнание 9X_git не защитит вас от ловушек Subversion, многие 9X_git из которых являются ситуациями, которые 9X_svn невозможно или легко разрешить в других 9X_git-commands системах.
Крайне редко техническая неполноценность 9X_subversion решения настолько очевидна, как с svn, я 9X_svn бы никогда не высказал такого мнения о win-vs-linux 9X_git-commands или emacs-vs-vi, но в данном случае он настолько 9X_git ясен, а система контроля версий - такой 9X_git-commands фундаментальный инструмент в арсенале разработчика, что 9X_subversion я считаю, что об этом следует говорить однозначно. Независимо 9X_svn от требования использовать svn по организационным 9X_git причинам, я умоляю всех пользователей svn 9X_svn не позволять своему логическому уму формировать 9X_svn ложное убеждение, что более современные 9X_subversion системы контроля версий полезны только для 9X_git-commands крупных проектов с открытым исходным кодом. Независимо 9X_svn от характера вашей разработки, если вы программист, вы 9X_git станете более эффективным программистом, если 9X_svn научитесь использовать лучше спроектированные 9X_subversion системы контроля версий, будь то Git, Mercurial, Darcs 9X_git или многие другие.
Ответ #23
Ответ на вопрос: Почему Git лучше Subversion?
Subversion очень проста в использовании. За 9X_git последние годы я ни разу не обнаружил проблемы 9X_subversion или того, что что-то работает не так, как 9X_git ожидалось. Также есть много отличных инструментов 9X_git с графическим интерфейсом и большая поддержка 9X_git интеграции SVN.
С Git вы получаете более 9X_svn гибкую систему контроля версий. Вы можете 9X_git использовать его так же, как SVN, с удаленным 9X_git репозиторием, в котором вы фиксируете все 9X_subversion изменения. Но вы также можете использовать 9X_svn его в основном в автономном режиме и только 9X_svn время от времени отправлять изменения в 9X_git удаленный репозиторий. Но Git более сложен 9X_git и требует более крутого обучения. Я впервые 9X_subversion обнаружил, что совершаю переход к неправильным 9X_git ветвям, косвенно создаю ветки или получаю 9X_svn сообщения об ошибках с небольшим количеством 9X_svn информации об ошибке и о том, где я должен 9X_git-commands искать с помощью Google, чтобы получить 9X_git-commands лучшую информацию. Некоторые простые вещи, такие 9X_subversion как замена маркеров ($ Id $), не работают, но 9X_subversion GIT имеет очень гибкий механизм фильтрации 9X_git и перехвата для объединения собственных 9X_subversion скриптов, поэтому вы получаете все, что 9X_subversion вам нужно, и многое другое, но для этого 9X_subversion требуется больше времени и чтения документации. ;)
Если 9X_git-commands вы работаете в основном в автономном режиме 9X_git-commands с локальным репозиторием, у вас нет резервной 9X_subversion копии, если что-то потеряно на вашем локальном 9X_subversion компьютере. С SVN вы в основном работаете 9X_git-commands с удаленным репозиторием, который одновременно 9X_git является вашей резервной копией на другом 9X_subversion сервере ... Git может работать точно так 9X_git же, но Линус не ставил перед собой цель 9X_git-commands создать что-то вроде SVN2. Он был разработан 9X_git-commands для разработчиков ядра Linux и нужд распределенной 9X_git-commands системы контроля версий.
Git лучше SVN? Разработчики, которым 9X_subversion нужна лишь некоторая история версий и механизм 9X_subversion резервного копирования, легко и хорошо работают 9X_svn с SVN. Разработчики, часто работающие с 9X_git ветвями, тестирующие больше версий одновременно 9X_subversion или работающие в основном в автономном режиме, могут 9X_svn извлечь выгоду из функций Git. Есть несколько 9X_svn очень полезных функций, таких как хранение, которых 9X_subversion нет в SVN, которые могут облегчить жизнь. Но, с 9X_git другой стороны, не всем нужны все функции. Поэтому 9X_git я не могу видеть мертвых SVN.
Git нужна лучшая 9X_svn документация, и отчеты об ошибках должны 9X_svn быть более полезными. Также редко встречаются 9X_svn существующие полезные графические интерфейсы. На 9X_git этот раз я нашел только 1 графический интерфейс 9X_git для Linux с поддержкой большинства функций 9X_subversion Git (git-cola). Интеграция с Eclipse работает, но 9X_svn она не выпущена официально, и официального 9X_svn сайта обновлений нет (только некоторые внешние 9X_subversion сайты обновлений с периодическими сборками 9X_svn из магистрали http://www.jgit.org/updates) Поэтому в наши дни наиболее 9X_subversion предпочтительным способом использования 9X_subversion Git является командная строка.
Ответ #24
Ответ на вопрос: Почему Git лучше Subversion?
Eric Sink из SourceGear написал серию статей о различиях 9X_git между распределенными и нераспределенными 9X_svn системами контроля версий. Он сравнивает 9X_git-commands плюсы и минусы самых популярных систем контроля 9X_svn версий. Очень интересное чтение.
Статьи 9X_svn можно найти в его блоге www.ericsink.com:
Ответ #25
Ответ на вопрос: Почему Git лучше Subversion?
Для людей, которым нужен хороший графический 9X_svn интерфейс Git, хорошим решением может стать 9X_git-commands Syntevo SmartGit. Он проприетарный, но бесплатный для некоммерческого 9X_git использования, работает в Windows / Mac 9X_git-commands / Linux и даже поддерживает SVN с использованием 9X_git какого-то моста git-svn, я думаю.
Ответ #26
Ответ на вопрос: Почему Git лучше Subversion?
Во-первых, одновременное управление версиями 9X_subversion кажется простой проблемой. Это совсем не 9X_svn так. В любом случае ...
SVN не интуитивно 9X_git понятен. Git еще хуже. [sarcastic-speculation] Это 9X_git может быть связано с тем, что разработчики, которым 9X_git нравятся сложные проблемы, такие как параллельный 9X_git контроль версий, не очень заинтересованы 9X_subversion в создании хорошего пользовательского интерфейса. [/ sarcastic-speculation]
Сторонники 9X_git SVN считают, что им не нужна распределенная 9X_svn система контроля версий. Я тоже так думал. Но теперь, когда 9X_subversion мы используем исключительно Git, я верю. Теперь 9X_git контроль версий работает для меня И для 9X_svn команды / проекта, а не просто для работы 9X_subversion над проектом. Когда мне нужна ветка, я делаю 9X_git-commands ветку. Иногда это ветка, у которой есть 9X_git-commands соответствующая ветка на сервере, а иногда 9X_svn ее нет. Не говоря уже обо всех других преимуществах, которые 9X_git мне придется изучить (отчасти благодаря 9X_subversion загадочному и абсурдному отсутствию пользовательского 9X_subversion интерфейса, который является современной 9X_git системой контроля версий).
Ответ #27
Ответ на вопрос: Почему Git лучше Subversion?
Git в Windows теперь неплохо поддерживается.
Посмотрите 9X_subversion GitExtensions = http://code.google.com/p/gitextensions/
и руководство для лучшего 9X_subversion взаимодействия с Windows Git.
Ответ #28
Ответ на вопрос: Почему Git лучше Subversion?
http://subversion.wandisco.com/component/content/article/1/40.html
Думаю, можно с уверенностью сказать, что 9X_subversion среди разработчиков SVN Vs. Аргумент Git 9X_svn бушует уже некоторое время, и каждый имеет 9X_subversion собственное мнение о том, что лучше. Об 9X_subversion этом даже говорили в ходе нашего вебинара 9X_subversion по Subversion в 2010 году и позже.
Хайрам 9X_git Райт, наш директор по открытому исходному 9X_subversion тексту и президент Subversion Corporation, рассказывает 9X_svn о различиях между Subversion и Git, а также 9X_subversion о других распределенных системах контроля 9X_git версий (DVCS).
Он также рассказывает о грядущих 9X_git изменениях в Subversion, таких как Working 9X_svn Copy Next Generation (WC-NG), которые, по 9X_svn его мнению, заставят ряд пользователей Git 9X_git-commands вернуться к Subversion.
Посмотрите его видео 9X_svn и поделитесь с нами своим мнением, комментируя 9X_subversion этот блог или публикуя сообщения на наших 9X_git форумах. Регистрация проста и займет всего 9X_svn несколько минут!
Ответ #29
Ответ на вопрос: Почему Git лучше Subversion?
В последнее время я живу в мире Git, и мне 9X_git-commands он нравится для личных проектов, но я пока 9X_git-commands не смогу переключить рабочие проекты на 9X_git него из Subversion, учитывая изменение мышления, которое 9X_git-commands требуется от персонала, без каких-либо неотложных 9X_git преимуществ. . Более того, самый крупный 9X_subversion проект, который мы выполняем внутри компании, чрезвычайно 9X_git зависит от svn:externals, который, насколько я видел 9X_subversion до сих пор, не так хорошо и без проблем 9X_svn работает в Git.
Ответ #30
Ответ на вопрос: Почему Git лучше Subversion?
Почему я считаю, что Subversion лучше Git 9X_git (по крайней мере, для проектов, над которыми 9X_subversion я работаю), в основном из-за удобства использования 9X_git и более простого рабочего процесса:
http://www.databasesandlife.com/why-subversion-is-better-than-git/
-
17
-
10
-
25
-
4
-
4
-
12
-
3
-
13
-
4
-
13
-
17
-
7
-
5
-
2
-
3
-
3
-
8
-
9
-
7
-
2
-
4
-
2
-
3
-
5
-
4
-
11
-
3
-
3
-
3
-
2
-
4
-
2
-
9
-
2
-
3
-
2
-
3
-
3
-
29
-
9
-
10
-
13
-
12
-
7
-
16
-
3
-
7
-
9
-
14
-
12