Системы контроля версий позволяют вам легче отслеживать изменения в файлах ... скажем, вы редактируете файл и фиксируете его в системе пару раз в неделю ... если что-то сломается, вы можете зайти и посмотреть все конкретные построчные изменения, которые вы вносили в этот файл с течением времени, пока не найдете изменения, которые вызвали проблему ... гораздо сложнее, если вы сохраняете разные копии своего файла, верно? (Эта функция настолько замечательна, что я знаю авторов, которые используют ее для отслеживания изменений в книгах, которые они пишут!)
Однако, где он действительно сияет, это ситуация, когда разные разработчики работают над определенным файлом одновременно ... поэтому, если я отредактирую строки 1-20 файла с кодом 400 строк, и вы редактируете 97 - 143, система управления версиями может объединять эти изменения вместе, так что когда вы собираетесь делать обновление, вы объединяете мои изменения в ваш файл и видите, как мой код влияет на то, что вы написали, если таковые имеются.
Еще лучше, если мы работали над одинаковыми строками кода , система контроля версий попытается объединить эти изменения, а если этого не произойдет, она предупредит вас о конфликте ... Затем вы можете связаться с другим разработчиком и выяснить, как объединить ваши изменения вручную. Конечно, с контролем версий вы обычно работаете над большим программным обеспечением, поэтому вы также можете загружать обновления для других файлов, с которыми вы не работаете напрямую.
С git вы получаете еще одну действительно ужасную функцию, которая заставляет разработчиков падать в обморок ...
Скажем, вы работаете над своим кодом, старательно пытаясь добавить функцию в свое программное обеспечение, но вы получаете экстренный вызов: "ПОЖАЛУЙСТА, ИСПРАВЬТЕ XYZ, САЙТ НЕ РАБОТАЕТ!"
Без контроля версий вам придется комментировать все то, что вы только что добавили, затем попытаться исправить проблему, и если вы что-то забудете, это может вызвать еще больше проблем, когда вы попытаетесь выследить новое ошибка, которую вы представили, потому что вы не помните весь новый код, который вы написали (можете ли вы сказать, что я был там раньше?) ... с помощью Git вы можете просто «разветвляться» (создать другую виртуальную копию своего кода ) ... и работайте над своей новой функцией ... затем, когда поступит вызов в 3 часа ночи, вы можете просто переключиться обратно на основную стабильную ветвь программного обеспечения, зафиксировать исправление, отправить его в живую ... затем вернуться к работе на вашей функции.
очень классно, правда?
Существует множество других вещей, которые вы получаете с системами контроля версий (в частности, с git) бесплатно (встроенная способность сравнивать версии одного и того же файла, локализованная копия всей базы кода с git, возможность изменять сообщения фиксации и история и т. д.).
Я бы порекомендовал бесплатную книгу сообщества Git, чтобы помочь вам в этом
https://github.com/rails/jquery-ujs
Надеюсь, это поможет