Как сделать клон репозитория git
Если вы работаете в команде, последующие 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 создаёт экземпляр удалённого репозитория.
Предположим, что нам необходимо клонировать репозиторий, который находится по ссылке:
Для этого мы должны перейти в нужную нам директорию и выполнить следующую команду:
В результате выполнения данной команды мы создадим копию удалённого репозитория в нужной нам директории.
На этом мы заканчиваем изучение процесса клонирования удалённого репозитория.
В следующей статье мы рассмотрим, как вносить изменения в локальный репозиторий.
Читайте также: