Основы Git и Github - efanov/mephi GitHub Wiki
Целью данного руководства является подготовка студентов к работе с системой контроля версий Git.
Основной ресурс, рекомендуемый к изучению: https://git-scm.com/book/ru/v2. Главы ниже кратко повторяют содержание этой книги. В соответствующих главах ниже, где применимо, приведены ссылки на более подробные главы из ресурса.
- Содержание
- Среда выполнения
- Установка Git
- Настройка GitHub
- Первоначальная настройка Git
- Создание Git-репозитория
- Запись изменений в репозиторий
- Просмотр истории коммитов
- Операции отмены
- Работа с удалёнными репозиториями
Виртуальная машина под управлением Rocky Linux 9 (см. Подготовка среды выполнения работы).
Выполните следующую команду. Может потребоваться ввод пароля пользователя, от лица которого Вы её выполняете.
sudo dnf install -y git
GitHub — сайт, на котором можно хранить свои Git-репозитории удалённо, что оказывается очень удобным для удалённого взаимодействия разработчиков или же работы с нескольких компьютеров.
Для начала использования зарегистрируйтесь на GitHub. Далее необходимо сформировать ключевую пару для доступа к GitHub из Git. Зайдите на виртуальную машину от лица Вашего пользователя и выполните следующую команду:
ssh-keygen -t ed25519 -C github -f ~/.ssh/github
Следуйте указаниям на экране. По итогу будет сгенерирована ключевая пара:
-
~/.ssh/github
— приватный ключ, который нельзя никому показывать, -
~/.ssh/github.pub
— публичный ключ, который мы укажем на GitHub, чтобы получить доступ с данной виртуальной машины.
Просмотрите ключ, выполнив
cat ~/.ssh/github.pub
Скопируйте его. Далее перейдите на GitHub, нажмите на иконку Вашего профиля > Settings (Настройки) > SSH and GPG keys (Ключи SSH и GPG) > New SSH key (Добавить ключ SSH).

Введите произвольное имя ключа, тип ключа оставьте, как есть, и в поле Key (Ключ) введите скопированный ключ. Нажмите Add SSH key (Добавить ключ SSH).
На виртуальной машине создайте файл ~/.ssh/config
и в нём укажите следующую информацию, заменив <username>
на Ваше имя пользователя на GitHub:
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
User <username>
Сохраните файл, закройте текстовый редактор. Следуя официальному руководству, выполните следующую команду для проверки соединения:
ssh -T [email protected]
Будет задан вопрос о доверии к ключу GitHub:
The authenticity of host 'github.com (IP ADDRESS)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
Are you sure you want to continue connecting (yes/no)?
Убедитесь, что отпечаток в сообщении соответствует отпечаток открытого ключа GitHub.
Если это так, введите yes
и нажмите <Enter>
.
Должно появиться сообщение вида
Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
Настройка завершена.
Для первоначальной настройки Git в виртуальной машине выполните следующие команды, указав вместо <name>
своё настоящее имя и вместо <email>
электронную почту, которую Вы указывали при регистрации на GitHub:
git config --global user.name "<name>"
git config --global user.email "<email>"
Если Вы не знакомы с текстовым редактором Vim и не хотите в нём разбираться, укажите другой текстовый редактор, который будет использоваться, если будет нужно набрать сообщение в Git. В примере ниже выбирается редактор Nano:
sudo dnf install -y nano
git config --global core.editor nano
Соответствующая глава из книги по Git.
Создайте папку с проектом, перейдите в неё и инициализируйте в ней репозиторий:
mkdir -p ~/projects/test-repo
cd ~/projects/test-repo
git init
Рассмотрим классический процесс работы над репозиторием. Перейдите по ссылке на страницу репозитория PyAra: https://github.com/efanov/pyara (опционально поставьте звёздочку 😊).
-
Нажмите Fork.
-
Нажмите Create Fork.
-
После этого откроется страница с форком. Склонируйте репозиторий на компьютер. Для этого нажмите Code > SSH > Копировать.
В виртуальной машине перейдите в папку ~/projects
и склонируйте к себе репозиторий:
cd ~/projects
git clone [email protected]:<username>/pyara.git
Вы также можете склонировать репозиторий без форка:
git clone [email protected]:efanov/pyara.git
или
git clone https://github.com/efanov/pyara.git
Соответствующая глава из книги по Git
Примечание: для лучшего понимания рекомендуется прочитать соответствующую главу из книги по Git.
Создайте файлы first_file.txt
и second_file.txt
с произвольным текстом и добавьте их в репозиторий.
Смысл команд ниже станет ясен немного позже.
echo "First file text." > first_file.txt
echo "Second file text." > second_file.txt
git add *.txt
git commit -m "initial commit"
Внесите изменения в файл first_file.txt
:
echo "New first file text." > first_file.txt
Для просмотра изменений выполните git status
:
git status
Добавьте изменения файла first_file.txt
в следующий коммит:
git add first_file.txt
Посмотрите, как изменился вывод команды git status
:
git status
Внесите изменения в файл second_file.txt
:
echo "New second file text." > second_file.txt
Снова посмотрите, как изменился вывод команды git status
:
git status
Теперь сделайте коммит текущих добавленных изменений (только файл first_file.txt
).
Флаг -m
задаёт строку, которая пойдёт в историю коммитов.
git commit -m 'change first_file.txt'
Снова посмотрите, как изменился вывод команды git status
:
git status
Самостоятельно внесите изменения в second_file.txt
и закоммиттье их.
Соответствующая глава из книги по Git
Для просмотра истории коммитов выполните git log
или git log --oneline
.
Соответствующая глава из книги по Git
Если вы хотите изменить последний коммит, внесите необходимые изменения и выполните
git commit --amend
Для отката изменений файла <file>
выполните
git restore <file>
Для отмены индексации (отслеживания) файла системой контроля версий выполните
git restore --staged <file>
Соответствующая глава из книги по Git
Для того, чтобы подключить к текущему репозиторию удалённый, который, например, находится на GitHub, выполните, где <uri>
замените на ссылку на Ваш удалённый репозиторий по протоколу HTTPS или SSH (для GitHub принципиально, чтобы это была ссылка именно SSH):
git remote add origin <uri>
Для того, чтобы получить изменения с удалённого репозитория, выполните
git pull
Для того, чтобы отправить изменения на удалённый сервер, выполните
git push <куда> <откуда> --set-upstream
Флаг --set-upstream
необходимо написать один раз.
Далее команду git push
можно использовать без дополнительных аргументов.