Команда git clone linux

Обновлено: 02.07.2024

GitHub — один из используемых сервисов размещения проектов для совместной разработки. Он поддерживает контроль версий, возможность отслеживания изменений кода, сравнение строк, а также он бесплатен.

В данной статье приведены примеры использования сервиса на компьютере под управлением операционных систем семейства Linux. Мы рассмотрим, как создать проект на локальном компьютере и залить его на сервис с помощью командной строки. Рассмотренные варианты использования git также можно применять на desktop системах, запустив окно терминала.

Установка git

Управление выполняется с помощью приложения git. Если его нет в системе, установку можно выполнить из репозитория.

Если используем CentOS / Red Hat:

yum install git-core

Если используем Ubuntu / Debian:

apt-get install git

Если мы хотим воспользоваться сервисом с компьютера Windows или Mac OS, необходимо скачать и установить desktop версию с официального сайта.

Синтаксис

Команды имеют следующий синтаксис:

* полный перечень опций, команд и аргументов можно получить командой man git.

Создание проекта на локальном компьютере

Инициализируем проект для git:

Мы получим ответ похожий на:

Initialized empty Git repository in /projects/.git/

Это означает, что репозиторий git создан.

Теперь добавим файлы в репозиторий:

* данной командой мы добавили папку и ее содержимое в репозиторий git.

Отправка данных на GitHub

Создание репозитория

Проходим процесс подтверждения, что мы не робот. Затем завершаем несколько шагов регистрации, нажимая Submit. В итоге мы получим письмо на адрес электронной почты, которую указали при регистрации. Необходимо будем подтвердить email, перейдя в письме по кнопке Verify email address.

Создаем репозиторий. Для этого кликаем по иконке профиля и переходим в раздел Your repositories:

Переход к созданию нового репозитория на GitHub

И кликаем по кнопке New. В следующем окне даем название репозиторию и нажимаем Create repository:

Создаем репозиторий на GitHub

Мы увидим страницу с путем к репозиторию:

Путь к репозиторию, который создали на GitHub

Заливаем проект в репозиторий на GitHub

Добавляем комментарий к нашему проекту:

git commit -m "Очередное изменение проекта" -a

* где Очередное изменение проекта — произвольный комментарий; параметр -a указывает, что комментарий нужно применить ко всем измененным файлам.

Теперь подключаемся к созданному репозиторию:

* где dmosktest — логин, который был указан при регистрации на github, а project1 — название, которое мы задали, когда создавали репозиторий.
* удалить удаленный репозиторий можно командой git remote rm origin.

Закидываем проект на GitHub:

git push origin master

* где master — ветка проекта (веток может быть несколько).

В нашем проекте на GitHub должны появиться файлы проекта:

Загруженный проект на GitHub

Получение файлов с GitHub

Для загрузки на компьютер файлов, создаем каталог с проектом и переходим в него:

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

Подключаемся к удаленному репозиторию:

Скачиваем проект командой:

Клонирование проекта

git clone <репозиторий на GitHub>

Например, использую наш репозиторий:

* данная команда создаст в текущей папке каталог project1 и инициализирует его как локальный репозиторий git. Также загрузит файлы проекта.

Возможные ошибки

* где dmosktest/project1.git — путь к нашему репозиторию.

Причина: проект ни разу не был зафиксирован (закоммичен).

Клонирование в Git — это процесс создания идентичной копии удаленного репозитория Git на локальную машину.

 git Clone

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

Как работает клонирование в Git?

Многие люди хотят создать общий репозиторий, чтобы позволить команде разработчиков публиковать свой код на GitHub / GitLab / BitBucket и т. д. Репозиторий, загружаемый в сеть для совместной работы, называется вышестоящим репозиторием или центральным репозиторием.

Центральный репозиторий указывает, что все изменения от всех участников помещаются только в этот репозиторий. Таким образом, это самый обновленный экземпляр репозитория самого себя. Иногда это часто называют исходным хранилищем. Изображение, приведенное ниже, довольно ясно говорит о концепции клонирования.

 git Clone

Что касается приведенного выше изображения, то процесс клонирования работает на следующих этапах:

Клонирование репозитория: пользователь начинает работу с вышестоящего репозитория на GitHub. Процесс начинается с клонирования репозитория на локальную машину. Теперь у пользователя есть точная копия файлов проекта в их системе, чтобы внести изменения.

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

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

Примечание: владелец репозитория может разрешить / запретить прямые изменения в Центральном репозитории, установить различные уведомления о любом изменении, перенесенном в центральное хранилище и многое другое.

Как использовать команду git Clone

Клонирование в Git может быть сделано на собственном репозитории или в любом другом репозитории.

Как клонировать репозиторий или использовать команду git Clone?

Клонирование репозитория из GitHub — это простой процесс. Но, прежде чем клонировать, пожалуйста, убедитесь, что у вас есть репозиторий на вашем аккаунте GitHub.

Каковы основные различия между раздвоением и клонированием?

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

Difference between Git Clone and Git Fork

Разветвление делается на аккаунт github, а клонирование осуществляется с использованием git. При форке репозитория вы создаете копию исходного репозитория (вышестоящего репозитория), но этот репозиторий остается в вашей учетной записи GitHub. В то же время, когда вы клонируете репозиторий, он копируется на вашу локальную машину с помощью Git.

В последнем уроке мы познакомились с командой Git fetch и Read more

В одной из последних статей мы узнали о команде Git Read more

Мы уже знаем, как вносить изменения в локальное хранилище и Read more

Команда git push при выполнении перемещает изменения, внесенные пользователем на Read more

Сегодня мы узнаем, как скопировать чужой репозиторий в наш аккаунт Read more

Все данные, доступные в локальном репозитории, могут быть загружены в Read more


В этом материале я хочу поделиться с вами тем, что узнала, осваивая Linux и Git.

Основные команды Linux

pwd : эта команда применяется для вывода сведения о рабочей директории.

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

cd : данная команда предназначена для смены каталога.


Эксперименты с командами Linux

cp : эта команда предназначена для копирования файлов и папок.

mv : с помощью данной команды можно переименовывать или перемещать файлы и папки.

touch : эта команда применяется для создания пустых файлов и для изменения временной метки файлов.

cat : данная команда позволяет просматривать содержимое файлов, с её помощью можно создавать копии файлов, присоединять содержимое одних файлов к другим.

tree : эта команда позволяет выводить сведения о директориях в древовидном формате. Команда, по умолчанию, выводит сведения о папках и файлах и информацию о количестве файлов и папок в выведенной ей структуре. Вот пример её использования


Пример использования команды tree

Здесь имена папок выделены синим цветом, имена файлов имеют белый цвет. В структурах, выводимой этой командой, используются и другие цвета.

echo : эта команда применяется для вывода передаваемых ей данных на экран.

grep : данная команда предназначена для работы с текстовыми данными. В частности, она позволяет выполнять поиск строк.

tail : с помощью этой команды можно вывести 10 последних строк файла.


Примеры использования команд grep и cat

awk : эта команда предназначена для работы с соответствующей утилитой, которая даёт в наше распоряжение мощные средства по обработке строк, возможности которых сравнимы с возможностями, имеющимися в полноценных языках программирования.


Пример использования конвейера

ssh : данная команда позволяет работать с ssh-клиентом, который используется для подключения к удалённым системами и для выполнения команд на них. Протокол SSH направлен на организации безопасного взаимодействия компьютеров.

rm : эта команда используется для удаления файлов и папок. Например, её вызов в виде rm file приводит к удалению файла, а в виде rm -r director y — к удалению директории и всего её содержимого.

Структура директорий Linux

В Linux используется древовидная структура директорий. Начало этой иерархической структуры находится в корневой директории. В эту директорию вложены все остальные директории. Для разделения имён директорий при указании путей к файлам и папкам используется прямая косая черта ( / ).

Вот как может выглядеть структура файловой системы в Linux-системе.


Структура директорий в Linux

Вот — характеристика некоторых важных папок.

Путь к директории Примечания

Корневая директория.

Директория, в которой хранятся материалы пользователя.

Тут хранятся файлы, необходимые для запуска Linux.

Здесь находятся исполняемые файлы.

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

Абсолютная и относительная адресация

Абсолютные пути к файлам всегда содержат в себе полный путь от корневой директории к директориям, в которых находятся необходимые файлы.

Относительные пути задаются относительно текущей директории.


Эксперименты по работе с путями

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

Относительный путь Описание Пример Примечания к примеру

Текущая рабочая директория.
Вывод сведений о содержимом текущей директории.

Родительская директория.
Переход на один уровень вверх, к родительской директории.

Предыдущая рабочая директория.
Возврат в предыдущую рабочую директорию.


Примеры использования особых относительных путей

Мягкие и жёсткие ссылки на файлы

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

Жёсткая ссылка представляет собой ссылку на то место жёсткого диска, где расположен файл. Система считает файл существующим до тех пор, пока есть хотя бы одна жёсткая ссылка на него. Фактически, если у файла есть несколько жёстких ссылок, это можно сравнить с тем, что у файла есть несколько имён.

Для создания жёстких и мягких ссылок на файлы используется команда ln . Вот пример создания с её помощью символической ссылки:

Управление поведением команд

Поведением команд Linux можно управлять, передавая им при их вызове аргументы (ключи, опции, флаги) командной строки. Они обычно выглядят как дефис ( - ), за которым идёт однобуквенное имя ключа (такая конструкция может выглядеть, например, как -a ). Они могут выглядеть и как два дефиса ( -- ), за которыми идёт более длинное имя ключа (вроде --all ).

Для того чтобы выяснять подробности о командах Linux, можно воспользоваться встроенной справочной системой, доступ к которой осуществляется посредством команды man . Например, для получения справки по команде ls можно воспользоваться командой man ls . Ниже показан результат работы подобной команды.


Справка по команде ls

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

  • NAME (имя). Тут содержится имя команды и краткое описание того, что она делает.
  • SYNOPSIS (сводка по синтаксису команды). Здесь показана схема использования команды.
  • DESCRIPTION (описание). В этом разделе приводится подробное описание команды и поддерживаемых ей ключей командной строки.


Использование команды ls -l

На предыдущем изображении вы могли заметить конструкции вида drwxr-xr-x . Это — описание прав доступа к файлам.

Права доступа к файлам

Предположим, у нас есть следующая конструкция, описывающая права доступа к файлу:


Обратите внимание на то, что в ней можно выделить четыре группы символов:

  1. Первый символ указывает на то, с чем именно мы имеем дело. А именно, если здесь стоит знак ( - ), то перед нами — файл. Буква ( d ) указывает на директорию. Буква ( l ) — на ссылку.
  2. Три следующих символа позволяют узнать о том, какими разрешениями по работе с данным файлом обладает его владелец: r — чтение, w — запись, x — выполнение. Полный набор разрешений представлен последовательностью rwx , если некое разрешение отсутствует, вместо него в соответствующей позиции ставится символ ( - ).
  3. Следующая последовательность из трёх символов указывает на то, какие разрешения на работу с файлом есть у группы пользователей (как правило, у группы владельца файла). Её содержимое читается по тем же правилам, что и описание прав владельца файла.
  4. Последняя последовательность из трёх символов, устроенная так же, как две предыдущих, описывает права всех пользователей кроме его владельца и тех пользователей, которые входят в группу файла.

Поговорим о некоторых особенностях настройки прав доступа к файлам с помощью chmod . Так, для назначения некоего разрешения всем пользователям используются конструкции, похожие на вышеописанную +x . Оператор ( + ) применяется для добавления разрешений, оператор ( - ) позволяет убирать разрешения, оператор ( = ) используется для установки определённых прав для пользователя-владельца файла ( u , user), для группы ( g , group), для остальных пользователей ( o , others) и для всех пользователей ( a , all). Делается это в конструкциях вида chmod u=rwx,g=rx,o=rx filename .

При назначении разрешений часто используют их запись в числовом виде. Определённым правам соответствуют восьмеричные коды. Так, x соответствует код 1 , w соответствует код 2 , а r соответствует код 4 . Код 0 соответствует полному отсутствию разрешений на работу с файлом. Права на файл описываются трёхзначным числом, порядок цифр в котором соответствует вышеописанному порядку расположения групп разрешений. То есть — первая цифра описывает разрешения владельца файла, вторая — разрешения группы, третья — разрешения остальных пользователей. Каждая из этих цифр представляет собой сумму кодов разрешений r , w и x .

Например, команда вида chmod 444 filename означает, что все будут иметь право лишь на чтение файла ( r--r--r-- ), а команда вида chmod 700 filename указывает на то, что у владельца будет право чтения, записи и запуска файла ( rwx, 4+2+1 ), а никто другой не имеет права выполнять с файлом никаких действий ( rwx------ ).

Работа с Git

При работе с Git обычно используется следующая последовательность действий:

  1. Модификация файла в локальной рабочей директории.
  2. Индексирование файлов (команда git add ).
  3. Сохранение слепка проиндексированных данных во внутренней базе данных ( git commit ).
  4. Отправка изменений из локального репозитория в удалённый ( git push ).
  5. Загрузка изменений из удалённого репозитория в локальный ( git pull ).


Типичная последовательность действий, используемая при работе с Git

Файлы при работе с Git могут пребывать в различных состояниях.


Состояния файлов

  • Untracked (неотслеживаемый) — это файл, за изменениями которого Git не наблюдает. Этот файл может быть добавлен в индекс и оказаться в состоянии Staged.
  • Unmodified (немодифицированный) — файл, за которым организовано наблюдение, но содержимое которого не менялось. Если удалить этот файл, наблюдение за ним прекратится. Если его изменить — он перейдёт в состояние Modified.
  • Modified (изменённый) — файл, за которым организовано наблюдение, содержимое которого изменилось. Он может быть подвергнут индексированию и переведён в состояние Staged.
  • Staged (проиндексированный) — это файл, за которым осуществляется наблюдение, и который был включён в индекс. Соответствующие изменения могут быть включены в базу данных Git.

git init : эта команда создаёт в директории пустой Git-репозиторий. Это — первый шаг, выполняемый при создании нового репозитория. После выполнения этой команды можно пользоваться командами git add и git commit .


Команда git init

git add : данная команда добавляет файлы в индекс. Она поддерживает, в виде git add . , добавление в индекс всех непроиндексированных файлов, в виде git add filename — добавление в индекс конкретного файла, в виде git add dirname — добавление в индекс директории.


Команда git add

git commit : эта команда записывает изменения в локальный репозиторий. Эти изменения называют, по аналогии с именем команды, «коммитами». У каждого коммита имеется уникальный идентификатор, что облегчает работу с коммитами.


Команда git commit

git status : эта команда позволяет получить сведения о текущем состоянии репозитория.


Команда git status

git config : данная команда позволяет настраивать Git. Среди настроек Git можно отметить user.name и user.email . Они содержат имя пользователя и адрес его электронной почты, используемые в коммитах и указывающие на то, кто их сделал. Если при вызове команды git config используется флаг --global — настройки применяются ко всем локальным репозиториям. Без этого флага настройки применяются только к текущему репозиторию.


Команда git config

git checkout : эта команда применяется для переключения между ветками репозитория (в виде git checkout <branch_name> ). С её помощью можно создать новую ветку и переключиться на неё ( git checkout -b <new_branch> ).

git merge : эта команда позволяет объединять ветки репозитория. Она берёт изменения, имеющиеся в одной ветке, и включает их в состав другой ветки. Например, есть ветка, в которой работают над новой возможностью проекта. После того, как работа над этой возможностью будет завершена, изменения переносят в ветку, хранящую стабильные возможности.

git clone : данная команда используется для создания локальной рабочей копии удалённого репозитория. При её выполнении производится загрузка материалов удалённого репозитория на компьютер. Клонирование существующего репозитория сопоставимо с созданием нового репозитория командой git init . Но при клонировании в нашем распоряжении оказывается репозиторий, в котором уже что-то есть, а при выполнении команды git init — пустой репозиторий.

git pull : эта команда предназначена для загрузки свежих данных из удалённого репозитория.

Итоги

Я рассказала вам обо всём, что узнала во время моего путешествия в мир Linux и Git. Это было очень увлекательно. Надеюсь, вам захочется сделать нечто подобное и изучить что-то новое, что-то такое, что расширит ваши профессиональные горизонты.

Существует два способа создать Git репозиторий. Первый — клонировать его из существующего репозитория (например, по сети); второй — создать репозиторий в существующем каталоге.

git init

Чтобы превратить обычный каталог в Git репозиторий и начать версионировать файлы в нём, просто запустите git init .

Впервые мы продемонстрировали эту команду в разделе Создание Git-репозитория главы 2 на примере создания нового репозитория для последующей работы с ним.

Мы немного поговорили о смене названия ветки по умолчанию с «master» на что-нибудь другое в разделе Удалённые ветки главы 3.

Мы использовали эту команду для создания чистого репозитория для работы на стороне сервера в разделе Размещение голого репозитория на сервере главы 4.

Ну и наконец мы немного покопались во внутренностях этой команды в разделе Сантехника и Фарфор главы 10.

git clone

На самом деле git clone работает как обёртка над некоторыми другими командами. Она создаёт новый каталог, переходит внутрь и выполняет git init для создания пустого репозитория, затем она добавляет новый удалённый репозиторий ( git remote add ) для указанного URL (по умолчанию он получит имя origin ), выполняет git fetch для этого репозитория и, наконец, извлекает последний коммит в ваш рабочий каталог, используя git checkout .

Команда git clone используется в десятке различных мест в этой книге, но мы перечислим наиболее интересные упоминания.

Первоначальное знакомство происходит в разделе Клонирование существующего репозитория главы 2, где мы даём немного объяснений и приводим несколько примеров.

В разделе Установка Git на сервер главы 4 мы рассмотрели как использовать опцию --bare , чтобы создать копию Git репозитория без рабочей копии.

В разделе Создание пакетов главы 7 мы использовали git clone для распаковки упакованного с помощью git bundle репозитория.

Наконец, в разделе Клонирование проекта с подмодулями главы 7 мы научились использовать опцию --recursive чтобы упростить клонирование репозитория с подмодулями.

И хотя git clone используется во многих других местах в книге, перечисленные выше так или иначе отличаются от других вариантов использования.

Читайте также: