Как сделать клон репозитория git

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

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

01 Перейдите в рабочий каталог

Перейдите в рабочий каталог и сделайте клон вашего репозитория hello.

Выполните:

Примечание : Сейчас мы находимся в рабочем каталоге.

Результат:

02 Создайте клон репозитория hello

Давайте создадим клон репозитория.

Выполните:

Результат:


Эта ситуация подходит, когда над проектом работают несколько человек .

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

Итак, есть каталог RU на домашнем ПК (с ним мы имели дело в прошлой статье, когда учились работать с системой контроля версий GIT и сервисом GITHub) и каталог RU на рабочем ноутбуке.


Репозиторий, созданный на домашнем компьютере хранится на сервере. Нужно его перенести с сервиса GITHub на рабочий ноутбук. Сделать это можно двумя способами.

1-ый способ переноса репозитория на другой компьютер

Находясь на сайте GITHub можно скачать ZIP-архив, разархивировать его и скопировать в нужный каталог на другом компьютере.


2-ой способ переноса репозитория - Команда git clone

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


Зайти в рабочий каталог на другом ПК (ноутбуке. В нашем случае это снова папка RU , но путь может быть любым). И выполнить команду git clone, которая имеет следующий синтаксис.


Итак, в папку book на другом компьютере (ноутбуке) был клонирован репозиторий с сервиса GitHub.

Изменения в репозитории на 2-ом компьютере

Поработаем теперь с копией репозитория на другом (рабочем) компьютере. Внесем изменения в файл index.html : добавим заголовок h2.


Даже в редакторе VScode напротив файла index.html мы видим букву M . Это говорит о том, что файл index.html модифицирован/изменен. Убедимся в этом при помощи команды git status.




Здесь следует понимать, что если мы клонируем репозиторий, то он автоматически связан с удаленным . Поэтому достаточно ввести команду git push без ключа u , имени origin и ветки main , так как эта связь уже есть.

Теперь если перейти на удаленный репозиторий, то мы увидим новый коммит, созданный на другом компьютере .


Вроде бы ничего нового. Все это было проделано в предыдущей статье.

Но не будем забывать , что сейчас мы работаем на другом/рабочем компьютере (ноутбуке). И допустим, что продолжить работу мы сможем только дома. А на домашнем компьютере нет тех изменений, которые были сделаны на работе.

Получение изменений из удалённого репозитория - Команда git pull

Чтобы получить изменения из удалённого репозитория используется команда git pull.


И, действительно, мы видим, что синхронизация прошла успешно и в файле index.html на домашнем компьютере появился заголовок h2 .

Итак, работать с одним репозиторием и с сервисом GitHub с разных компьютеров не сложно. Здесь важно знать основные команды и порядок их выполнения. Именно так работают разные разработчики над одним проектом.

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

Ошибка - ! [rejected] error: failed to push some refs - Слияние репозиториев

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


Допустим Вы забыли про команду git pull. При этом на удаленном репозитории произошли изменения, о которых Вы не знаете .

То есть мы работаем как обычно: вносим изменения в локальный проект, затем файл с изменениями добавляется в индекс, создается коммит. Но при попытке использовать команду git push возникает ошибка :


Обновления репозитория были отклонены. Сначала нужно интегрировать удаленные изменения . То есть использовать команду git pull.


C одной стороны на удаленном репозитории был создан файл README.md , который появился и в локальном проекте. Но на локальном репозитории тоже произошли изменения: добавлен новый параграф - тег p в файле index.html .

Теперь при использовании команды git push произойдет слияние двух репозиториев: локального и удаленного. На удаленном репозитории появились три новых коммита:

1-ый коммит - создание файла README.md на удаленном репозитории;

2-ой коммит - когда мы не знали об изменениях и внесли поправки в локальный репозиторий;

3-ий коммит - слияние двух репозиториев Merge branch 'main'. .


Но подобных ситуаций и ошибок не будет возникать, если следовать этому правилу.

Зачем нужен файл .gitignore?

Игнорирование файлов при работе с GIT или файл .gitignore.

В реальных проектах не обязательно push-ить все файлы на удаленный репозиторий. Часть файлов являются служебными и на GitHub они не нужны.

Кроме этого некоторые из них могут "весить" сотни МегаБайт и более. При этом отправка файлов на GitHub будет занимать много времени, либо терминал будет попросту зависать.

Для этого существует файл .gitignore - в нем указаны каталоги/файлы, которые не нужно выкладывать на удаленный репозиторий . Ниже приведен пример файла .gitignore.

npm-debug.log*
yarn-debug.log*
yarn-error.log*

GitKraken - графический клиент GIT

Просматривать репозиторий на GitHub не очень удобно.

В редакторе VScode есть плагин GitLens, который расширяет возможности GIT, встроенного в Visual Studio Code. И плагин Git History, который помогает просматривать истории изменений. Но и они не самое лучшее решение.

Существует специальный графический кросс-платформенный клиент для работы с репозиториями и сервисами GIT. Это GitKraken.


GitKraken имеет удобный интерфейс и множество функций. При входе в GitKraken через аккаунт GitHub мы увидим все созданные ранее коммиты.

Моя проблема в том, что мне нужно, чтобы содержимое репозитория Git было клонировано в мой текущий каталог, чтобы оно отображалось в правильном месте для веб-сервера:

Я знаю, как перемещать файлы после того, как я клонировал репозиторий, но это, похоже, нарушает работу Git, и я хотел бы иметь возможность обновлять его, просто вызывая git pull . Как я могу это сделать?

В Windows вы можете перемещать файлы из папки, где вы будете клонировать репозиторий [если он есть), поэтому он пуст при выполнении git clone . После клонирования переместите ваши файлы назад [ctrl-z] и whoala ! Если текущая папка пуста, просто используйте: git clone giturl .

Вариант А:

Ergo, для right here использования:

Вариант Б:

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

Первая строка захватывает все обычные файлы, вторая строка захватывает точечные файлы. Также возможно сделать это в одну строку, включив dotglob (т.е. shopt -s dotglob ), но это, вероятно, плохое решение, если вы задаете вопрос, на который отвечает этот ответ.

Еще лучше:

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

Для вашего случая это будет что-то вроде:

Который легко можно изменить, чтобы проверить, если вы этого хотите, то есть:

без перемещения файлов. Добавляется -fn в случае, если кто-то копирует эти строки ( -f принудительно, -n избегайте некоторых часто нежелательных взаимодействий с уже существующими и несуществующими ссылками).

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

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

@MEM Я думаю, что он имеет в виду создать символическую ссылку на .git, т. Е. ln -s path/to/.git path/to/working/directory

Кто-нибудь может объяснить преимущества этого ?? Я сегодня немного дремучий. Как использование серверов symlink приносит пользу?

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

"." в конце указывается текущая папка как папка оформления заказа.

Зайдите в папку .. Если папка пуста, то:

На самом деле это был самый полезный ответ для меня, когда мне просто нужно было перенести уже созданный проект во вновь созданный репозиторий. Престижность!

Базовое клонирование репозитория Git

Вы клонируете репозиторий с

Например, если вы хотите клонировать библиотеку Git Drupal Open Framework Стэнфордского университета под названием open_framework, вы можете сделать это следующим образом:

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

Клонирование репозитория в определенную локальную папку

Если вы хотите клонировать репозиторий в каталог с именем, отличным от open_framework, вы можете указать это в качестве следующего параметра командной строки:

Эта команда делает то же самое, что и предыдущая, но целевой каталог называется mynewtheme.

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

Чтобы клонировать git-репозиторий в определенную папку, вы можете использовать -C

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

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

Поскольку вы клонируете в общедоступную папку, рассмотрите возможность отделения вашего Git-репозитория от рабочего дерева, используя --separate-git-dir= или исключая .git папку в конфигурации вашего веб-сервера (например, в .htaccess файле).

Чтобы клонировать в текущий рабочий каталог :

Чтобы клонировать в другой каталог :

Когда вы перемещаете файлы туда, где вы хотите их, вы также перемещаете .git каталог? В зависимости от вашей ОС и конфигурации этот каталог может быть скрыт.

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

Клонируем "конкретную ветку":

Если вы хотите клонировать в текущую папку, попробуйте это:

Применение

Клонируйте репозиторий, расположенный в , в папку с именем на локальном компьютере.

Убедитесь, что вы удалили репозиторий .git, если пытаетесь зайти в текущий каталог.

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

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

Вот псевдоним, который я создал, чтобы ускорить процесс. Я сделал это для zsh, но он должен прекрасно работать для bash или любой другой оболочки, такой как fish, xyzsh, fizsh и так далее.

Edit ~/.zshrc , /.bashrc и т.д. с вашим любимым редактором (шахта Leafpad, так что я бы написать $ leafpad ~/.zshrc ).

Однако я предпочитаю создать плагин zsh для отслеживания всех моих псевдонимов. Вы можете создать персональный плагин для oh-my-zsh, выполнив следующие команды:

Затем добавьте эти строки в только что созданный пустой файл alises.plugin:

(Отсюда замените свое имя на мое.)

Затем, чтобы заставить работать псевдонимы, они (вместе с zsh) должны быть получены (или как там это называется). Для этого в вашем документе плагина добавьте:

Сохраните ваш плагин oh-my-zsh и запустите allsource . Если это не похоже на работу, просто запустите source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh . Это загрузит источник плагина, который позволит вам использовать allsource с этого момента .

Я нахожусь в процессе создания репозитория Git со всеми моими псевдонимами. Пожалуйста, не стесняйтесь проверить их здесь: точечные файлы Ev . Пожалуйста, не стесняйтесь раскошелиться и улучшить их в соответствии с вашими потребностями.

В данной статье мы рассмотрим процесс клонирования проекта из центрального репозитория на локальную машину.

Операция clone создаёт экземпляр удалённого репозитория.

Предположим, что нам необходимо клонировать репозиторий, который находится по ссылке:

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

В результате выполнения данной команды мы создадим копию удалённого репозитория в нужной нам директории.

На этом мы заканчиваем изучение процесса клонирования удалённого репозитория.
В следующей статье мы рассмотрим, как вносить изменения в локальный репозиторий.

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