Статьи

Изучение Git: Основы репозитория

Хранилище — это специализированное хранилище, в котором вы можете отслеживать свою работу. Это простой пример того, как может выглядеть специальный репозиторий:

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. Следует отметить две важные вещи:

  1. Сервер не был запущен.
  2. Репозиторий полностью локальный.

Трудно переоценить первый пункт: сервер не был запущен. Трудно доказать несуществование чего-либо, но на нашей отдельной машине обычно есть команды, позволяющие вам увидеть все запущенные процессы. В 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.