Управляйте версиями файлов как программист с помощью Git

Если вы когда-нибудь работали с коллегами над документом, вы знаете эту боль: кто-то делает первый проход (document.doc), а затем отправляет его всем по электронной почте. Следующий человек делает то же самое, что и третий, каждый прикрепляя ревизию (document_rev3.doc) к имени файла. Менеджеру нравится то, что она видит, и помечает его как завершенное (document_final.doc)… Пока не произойдут изменения в последнюю минуту (document_final_Aaron’s changes_reviewed_by_Bob_now_really_final.doc).

Теперь представьте такие изменения в десятках файлов с исходным кодом. Программисты создали системы контроля версий (VCS) для решения этой проблемы. Они носят технический характер, но могут быть полезны и опытным пользователям. Давайте посмотрим на основы управления версиями с использованием современной системы, Гит.

Обзор контроля версий в использовании

Основной целью VCSs является захват версии (также называемый изменения) файла с течением времени. Это значит не полагаться на грубые методы, подобные описанным выше. В этих системах при доступе к «document.doc» вы работаете с самой последней версией по умолчанию. Но вы также можете вернуться в историю файла и получить предыдущие версии. Системы, созданные специально для управления версиями файлов, начались с разработки программного обеспечения, но также вошли в более «массовые» приложения.

Эволюция контроля версий в разработке программного обеспечения

Изначально приложения для контроля версий создавались так, чтобы программисты не могли нарушать код друг друга. Первые системы просто позволяли пользователям блокировать файлы из других правок, в то время как системы второго поколения (такие как Subversion)

) добавлена ​​полная проверка проекта из центрального хранилища.

Хотя эти системы второго поколения все еще широко используются, отрасль мигрирует к системам третьего поколения. Основной характеристикой этих систем является то, что они распределенный, это означает, что нет центрального хранилища. Скорее, у каждого пользователя есть собственная полная копия хранилища (включая все предыдущие версии). Но любые изменения (даже полные исправления) являются «локальными», пока он не «вытолкнет» их в другое хранилище. Затем этот пользователь может вытащить клона, чтобы внести изменения и повторить процесс.

система контроля версий

Текущий контроль версий для непрограммистов

Возможность захвата нескольких версий одной и той же вещи также является обычной особенностью для средних пользователей.

, Благодаря доступу к более дешевому хранилищу, как на локальном компьютере, так и через простые в использовании облачные сервисы, пользователи теперь могут отслеживать историю своих файлов. Программы общего назначения делают это несколькими способами.

Операционные системы может захватить историю файлов или папок

, Это может происходить автоматически при каждом сохранении файла или по регулярному расписанию. Немного настольные приложения также позволяет вам захватывать версии или снимки файлов. Например, LibreOffice предоставляет функцию «Сохранить версию» (как показано на верхнем изображении ниже), которая позволяет сохранять несколько версий документа в одном файле. Наконец, веб-приложения и облачные приложения, такие как Google Drive, ownCloud и т. Д., Также сохранят прошлые итерации файла или документа (как показано для Документов Google на нижнем изображении ниже) либо за кулисами, либо по вашей экспресс-команде.

система контроля версий lo версии

Система контроля версий Google Docs версий

Зачем тогда использовать управление версиями, ориентированное на программирование?

Поскольку все эти опции на уровне ОС или приложений уже существуют, зачем использовать эти инструменты для программистов? У указанных выше методов есть несколько недостатков, в том числе:

  • Некоторые операционные системы сохраняют каждый твик в файл в новой версии

    , Это не только займет ненужное хранилище, но и затруднит определение конкретной точки восстановления для файла.

  • Эти решения также могут использовать файл в качестве основного устройства для управления. Но системы контроля версий обычно работают на уровне каталогов (включая подкаталоги). VCS позволяет легко увидеть, какой файл изменился и когда.
  • Эти же решения также не дают вам возможности маркировать итерации в большинстве случаев. Это также затрудняет поиск файла с отрывком текста, который вы перезаписали в какой-то момент, прежде чем вы поняли, насколько он великолепен.
  • Управление версиями в операционных системах и приложениях, таких как Word, также создает отдельные точки отказа. Для Word это сам файл (если он испорчен, попрощайтесь также со всеми своими предыдущими копиями). Для операционной системы это жесткий диск

    Если вы не являетесь ответственным пользователем и регулярно выполняете резервное копирование

    ,

  • Природа веб-сервисов означает, что ваши старые версии могут находиться в облаке. Например, если вы попытаетесь просмотреть историю файла Dropbox в Linux (как показано на рисунке ниже), вы будете перенаправлены на веб-сайт.

История Dropbox системы контроля версий

Если какие-либо или все эти проблемы заставляют вас хотеть чего-то большего, просмотрите следующий раздел, где мы решаем их с помощью Гит.

Контроль версий с помощью Git

В следующих разделах мы рассмотрим каждый из этих шагов для очень важного проекта: этой самой статьи. Мы сделаем это, используя версию Git для командной строки. Знание команд терминала позволит легко найти их эквиваленты в GUI, и это гарантирует, что вы сможете использовать их на любой платформе.

1. Настройка Git-репозитория

Если на вашем компьютере не установлен git (как на Mac, как и в некоторых дистрибутивах Linux), вы можете либо загрузить установщик Windows со страницы загрузки проекта, либо установить в Linux команду (специфичную для вашего дистрибутива), например:

sudo apt install git

Следующее, что нам нужно сделать, это настроить git хранилище, это просто папка, содержащая ваш проект. Чтобы воспользоваться Git-версиями, вам нужно инициализировать папка в качестве хранилища. Вы можете сделать это в командной строке с помощью следующей команды:

git init

git init fileman

После этого вы можете ничего не увидеть, но включите опцию «показывать скрытые файлы» в вашем файловом менеджере, и вы увидите, что .мерзавец папка (как показано на рисунке выше). Это где git хранит всю свою информацию, чтобы она не мешала вам.

2. Добавить и зафиксировать свой первый файл

Следующим шагом является создание некоторого контента (файлов) в вашем проекте. Это могут быть файлы любого типа, так как большинство программных проектов состоят из кода (текста) и ресурсов, таких как графика (двоичные файлы).

, После создания сделайте следующее в командной строке, оставаясь в каталоге вашего проекта:

git status

мерзавец статус

Первый шаг к фиксации — «поставить» новые или обновленные элементы. Посмотрите, как вышеприведенный вывод позволяет узнать, есть ли «неустановленные» изменения? Вы можете разместить все в своем каталоге (рекурсивно, то есть включить подпапки и их файлы) с помощью этой команды:

git -a .

Флаг «-a» означает «добавить», а точка относится к текущему каталогу. По сути, он говорит «добавить все файлы в мой коммит». Теперь, чтобы фактически сделать коммит, введите следующее:

git commit -m "WHOOP, my first commit!"

git add commit

Теперь, когда вы снова проверите статус, не должно быть никаких ожидающих изменений. Чтобы увидеть сам коммит, проверьте журнал git, используя режим графика, с сокращением списка до одна линия, а также украшен для удобства чтения:

git log --all --decorate --oneline --graph

мерзавец

Это покажет вам хороший график вашего коммита, с самым последним наверху.

3. Создайте ветку для эксперимента

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

git branch experiment1
git checkout experiment1

мерзавец ветка

Вторая команда переключает вас на ветку «эксперимент1». Вы можете переключиться обратно, заменив его на «мастер». Когда вы начнете работать над текстом, обратите внимание на разницу между тот же файл из каждой ветки. Во-первых, ветка «эксперимента1» с вашим новым текстом:

Git Branch Эксперимент1

Сравните это с оригиналом:

мастер веток

Теперь, поработав некоторое время (заканчивая новым коммитом), лучшее, что вы можете придумать, это «Lorem ipsum dolor sit amet…?». Что это? Это чепуха, и она должна быть немедленно исключена из вашего проекта. Вы можете удалить свою ветку с помощью следующей команды («-D» для принудительного удаления):

git branch -D experiment1

git ветка удалить

Теперь запустите другую ветку и добавьте что-нибудь умное вместе с некоторыми изображениями:

git branch experiment2
git checkout experiment2 git add . git commit -m "More text, added images"

git добавить ветку коммита

4. Объедините свои изменения

Наконец, когда вы будете довольны изменениями в вашей текущей ветке, следующая команда объединит их с веткой «master». При условии, что вы не слишком часто переключаетесь между ними, это приведет к тому, что все ваши новые изменения будут применены, а новая ревизия будет создана. Следующее в командной строке объединит их для вас:

git merge experiment2

Git Post Merge

Теперь у вас будет ревизия, которая сочетает в себе последние версии «master» и последние версии «эксперимента2». На этом этапе вы можете избавиться от эксперимента (в конце концов, он был успешным) со следующим:

git branch -d experiment2

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

5. Нажмите в безопасное место

Наконец, Git является распределенный система, что означает, что вы можете иметь несколько копий вашего хранилища и синхронизировать их. Например, создайте новый репозиторий на сервере, на котором вы можете использовать SSH

с помощью этой команды:

git init --bare

Флаг «–bare» устанавливает его как своего рода репозиторий только для чтения, так как вы не можете изменять файлы напрямую. Затем вы можете установить это как удаленную копию вашего локального репозитория следующим образом (первая команда гарантирует, что новые локальные ветви создаются удаленно):

git config push.default matching
git remote add central ssh://[username]@[URL]/path/to/repository git push --set-upstream central master

Git Remote

Настройка для управления версиями и резервного копирования с помощью Git

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

  1. Внесите изменения в файлы проекта.
  2. Выполните «git add.», Чтобы добавить все изменения в коммит.
  3. Выполните «git commit -m [some message]», чтобы зафиксировать изменения в вашем местный репозиторий. Повторите с самого начала.
  4. Выполните «git push», чтобы регулярно вносить изменения в удаленный репозиторий.
  5. Выпустите «git clone ssh: // [имя пользователя] @ [URL] / путь / к / хранилище» с другого компьютера на

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

Ссылка на основную публикацию
Adblock
detector