Хранилище — это специализированное хранилище, в котором вы можете отслеживать свою работу. Это простой пример того, как может выглядеть специальный репозиторий:
C:\buildtools>dir Volume in drive C is GNU Volume Serial Number is 5101-E64D Directory of C:\buildtools 03/15/2014 08:22 PM. 03/15/2014 08:22 PM .. 03/01/2014 08:22 AM 11,843 filefixup-01.bat 03/03/2014 08:52 AM 11,943 filefixup-02.bat 03/08/2014 11:22 AM 12,050 filefixup-03.bat 03/10/2014 02:22 PM 12,352 filefixup-04.bat 03/15/2014 03:21 PM 11,878 filefixup.bat 5 File(s) 60,066 bytes 2 Dir(s) 467,705,196,544 bytes free
Давайте постепенно раскроем этот пример, чтобы правильно представить основы репозитория управления версиями.
Предположим, у нас есть процесс сборки, который требует предварительной обработки некоторых файлов. Возможно, нам придется переименовать эти файлы или добавить к ним временную метку. Давайте предположим, что мы находимся в Windows, поэтому мы будем использовать пакетный файл Windows (его суффикс BAT) для выполнения этих шагов.
Мы пишем код для этого служебного скрипта, сохраняя его в файл с именем filefixup.bat, в каталоге с именем buildtools. Скрипт работает отлично, но через несколько дней нам нужно кодировать различные этапы предварительной обработки. Однако старый BAT-файл все еще работает, поэтому вместо внесения изменений в этот файл вы переименовываете его, добавляя к его имени строку «-01» (filefixup-01.bat). Это означает для вас «версию 01». и вы заметили, что «версия 01» — это первая версия утилиты, которая переименовывает и добавляет временную метку к файлам. Это новое имя файла также дает вам возможность продолжать использовать эту старую версию, пока вы работаете с более новой версией.
Вы начинаете добавлять новый код в файл filefixup.bat, зная, что вы всегда можете вернуться к файлу filefixup-01.bat. Файл с суффиксом 01 является копией BAT-файла. Файл без суффикса 01 является вашей рабочей копией.
Через несколько часов вы достигаете хорошей точки остановки с новой утилитой. Вы понимаете, что было бы неплохо сделать новую версию этой программы. Следуя вашему соглашению, вы создаете копию рабочего файла, называя его filefixup-02.bat. Еще раз, вы делаете еще одну пометку, что «версия 02» содержит ваши улучшения.
Теперь ваш каталог выглядит так:
C:\buildtools> dir Volume in drive C is GNU Volume Serial Number is 5101-E64D Directory of C:\buildtools 03/15/2014 08:22 PM. 03/15/2014 08:22 PM .. 03/01/2014 08:22 AM 11,843 filefixup-01.bat 03/03/2014 08:52 AM 11,943 filefixup-02.bat 03/03/2014 08:53 AM 11,943 filefixup.bat 3 File(s) 60,066 bytes 2 Dir(s) 467,905,187,544 bytes free
Я надеюсь, что вы можете увидеть, как мы могли попасть в список, который вы видели в начале этой статьи. Вы продолжаете методично вносить изменения в программу, сохраняя ее под новым именем файла каждый раз, когда вы добираетесь до логической остановки. Если вы остроумны, вы можете даже сохранить копию с именем filefixup-beforelunch.bat, чтобы указать версию, над которой вы работали, непосредственно перед обедом. Вы выбросите это, но обед — остановка.
Со временем вы можете увидеть временную историю, посмотрев на ваш прогресс по временным меткам в файлах версий. Вы можете создать резервную копию всего каталога на USB-накопителе или на сетевом общем диске. Возможно, когда-нибудь вам придется вернуться к более ранней версии, и для этого просто скопируйте нужную версию поверх рабочего файла. Это те операции, которые вы можете выполнять с помощью этой специальной системы контроля версий.
Неудивительно, что Git делает все это и даже больше. Давайте теперь забудем эту или любую другую специальную систему, которую вы, возможно, использовали ранее, и попробуйте Git.
Создание нового Git-репозитория
Команда для создания нового репозитория Git — это git init. Мы можем напечатать это в любом каталоге, и мгновенно Git-репозиторий будет создан в этом каталоге. Это все, что нужно сделать.
ПОПРОБУЙ ЭТО СЕЙЧАС
В этом разделе вы вводите команды в командную строку Git. Для пользователей Windows это означает, что вы будете вводить команды в Git Bash (вы не можете использовать окна DOS или PowerShell для таких операций). Для пользователей Mac и Unix / Linux вы будете вводить команды в стандартное приложение терминала.
Эти шаги позволяют перейти к домашнему каталогу, создать новый каталог, а затем создать Git-репозиторий в этом каталоге.
% cd % mkdir buildtools % cd buildtools % git init % ls
Стоит отметить, что последняя команда ничего не печатает. В репозитории нет файлов, потому что мы еще не добавили ни одного!
Выполнение вышеуказанных шагов создаст Git-репозиторий прямо в каталоге buildtools. Следует отметить две важные вещи:
- Сервер не был запущен.
- Репозиторий полностью локальный.
Трудно переоценить первый пункт: сервер не был запущен. Трудно доказать несуществование чего-либо, но на нашей отдельной машине обычно есть команды, позволяющие вам увидеть все запущенные процессы. В Windows вы можете посетить Task Explorer. В Mac или в Unix / Linux вы можете ввести ps -e. Если вы проверите эти механизмы, вы не увидите запущенный процесс Git. Git не требует сервера. Не требуя сервера, очень легко решить для себя запустить контроль версий в некотором каталоге, потому что вам не нужно запрашивать разрешение ни у кого, кроме вас самих. (И да, вы всегда должны позволять себе использовать Git!)
Второй элемент является следствием первого элемента: созданный вами репозиторий полностью находится на вашем компьютере. Обратите внимание, что я не сказал, что хранилище «работает на вашем компьютере». Ничего не работает Но файлы репозитория Git были созданы, и каталог buildtools был преобразован из обычного каталога в рабочий каталог управления версиями.
На рисунке 1 показано, что происходит, когда вы набираете git init. Вы создаете рабочий каталог, и когда вы набираете git init, создается Git-репозиторий. Git-репозиторий на самом деле находится на вашем компьютере в рабочем каталоге, а не на каком-то сервере в сети!
Я стараюсь различать рабочий каталог и репозиторий, потому что это две разные вещи. Рабочий каталог — это просто место, где вы выполняете свою работу. Хранилище — это специальная область хранения, в которой вы можете сохранять версионные файлы. Программное обеспечение Git может отслеживать файлы, то есть оно может обнаруживать различия между файлами в хранилище и файлами в рабочем каталоге.
Теперь мы можем начать создавать файлы в рабочем каталоге и добавлять их в репозиторий.
Хранилище Above и Beyond Git существует в отдельном скрытом каталоге с именем .git. В командной строке имена файлов или каталогов, начинающиеся с точки или точки, считаются скрытыми командой ls file and directory list. Вы можете увидеть репозиторий Git, набрав ls -a .git в нашем рабочем каталоге (напомним, что это каталог с именем buildtools). Вы даже можете посмотреть туда, набрав следующее:
Однако природа этих файлов и каталогов выходит за рамки этой статьи. Я признаю, что людям любопытно, где на самом деле находится хранилище, и на это есть ответ: хранилище находится в рабочем каталоге. Имейте в виду, что вы не должны касаться ни одного из этих файлов! Git манипулирует ими, и их изменение вручную вызовет проблемы в будущем.
% cd .git
% ls
Эта статья взята из Learn Git за месяц обедов. Сэкономьте 39% на Learn Git за месяц Lunces с кодом 15dzamia на manning.com.