GIT в помощь Системному Администратору
Почему Git/GitHub так важен сегодня? Постараюсь объяснить ‘человеческим’ языком. В первую очередь Github это своего рода социальная сеть разного рода разработчиков, каждый может написать код или скрипт выложить его на Github, тем самым дав возможность другим разработчикам использовать код либо улучшать его. Вы можете из любой точки мира и с любой машины подключиться к своему репозиторию и скачать код для его использования или модификации. Важно понять что GitHub — это сервис для проектов, а Git это инструмент взаимодействия с этим сервисом и реализация распределённой системы контроля версий, что позволяет совместно и комфортно работать над проектами, с разными репозиториями и разными группами людей.
Для большинства операций в Git’е необходимы только локальные ресурсы, информация с других компьютеров в сети не нужна. Поскольку вся история проекта хранится у вас на диске, большинство операций кажутся мгновенными. К примеру, чтобы показать историю проекта, Git’у не нужно скачивать её с сервера, он просто читает её прямо из вашего локального репозитория. Поэтому историю вы увидите мгновенно.
Если вы на отдыхе и вас осенило, можно спокойно сохранять стадии проекта (делать коммиты), а затем отправить их, как только сеть станет доступна.
Перед сохранением любого файла Git вычисляет хеш-сумму, и она становится индексом этого файла. Поэтому невозможно изменить содержимое файла или каталога так, чтобы Git не узнал об этом. Если информация потеряется при передаче или повредится на диске, Git всегда это выявит. Фактически, в своей базе данных Git сохраняет всё не по именам файлов, а по хешам их содержимого.
Начало работы
Установка
apt install git # установка в Ubuntu\Debian
yum install git # установка в CentOS
git --version # проверить версию git
Первое, что вам следует сделать после установки Git’а, — указать ваше имя и адрес электронной почты. Это важно, потому что каждый коммит в Git’е содержит эту информацию, и она включена в коммиты, передаваемые вами:
git config --global user.name "Имя Пользователя"
git config --global user.email myemail@gmail.com
Проверить используемые настройки
git config --list #-l более короткий ключ
Настройки хранятся в ~/.gitconfig в linux, C:\Users\user\.gitconfig в Windows.
Функционал
И так, вы можите:
- Клонировать существующие чужие репозитории к себе и видоизменять их.
- А можете создать локальный репозиторий у себя и затем, при желании, загрузить его на сервер в GitHub.
Процесс использования Git:
- Вносим изменения существующие файлы или добавляем новые.
- Индексируем изменения и новые файлы.
- Сохраняем изменения.
Работа с локальным репозиторием
mkdir Проект # Создаём директорию проекта
cd Проект # Переходим в неё
git init . # Инициальзируем текущую директорию для проекта
touch file # Создаём файл, пишем код
git add имя_файла # Индексируем файл в проекте(. или * все файлы)
git commit -m "коментарий" # Сделать снимок файлов проекта, фиксируем изменения (a - выбрать все изменённые файлы для коммита, m - описания коммита)
git status # Посмотреть состояние проекта в данной директории
git status -s # Сокращённая версия статуса
Работа с уже существующим проектом на GitHub
Допустим вы нашли на GitHub интересующий вас код, вы можите копировать его к себе 3 способами: по SSH , по HTTPS, и просто ZIP архивом. Клонирование репозитория с сервера GitHub на локальный компьютер, получаем локальную копию репозитория.
git clone git://github.com/AnatoliiKyrylenko/MD5Checker.git # Клонировать проект с репозитория на локальную машину
Редактируем и добавляем файлы в проект.
git push origin # Отправить локальный репозиторий в github, спросит логин и пароль
История изменений, восстановление файлов и игнорирование файлов
git log # История всех изменений (комитов)
git log -1 # Смотреть информацию по последнему комиту (-p - что именно было изменено)
git checkout -- имя_файла # Вернуть файл до состояния последнего комита
git diff --stage # Посмотреть разницу между последним комитом и стадией add
.gitignore # Список игнорируемых файлов и каталогов (примеры: *.txt -все txt, folder/)
Работа с Ветвлениями
git branch # показать ветки, покажет *master
Ветка master это главная ветка, в больших проектах с ней не работают, а создают её копии, модифицируют, тестируют и уже потом, то что получилось соеденяют с master веткой.
git branch имя_ветки # Созать ветку
git checkout имя_ветки # Перейти на ветку
git checkout -b имя_ветки # Аналог двух верхних команд, создать и перейти на ветку
git merge имя_ветки # Соеденить указанную ветку с master веткой
git branch -d имя_ветки # Стереть ветку (-D для ветвей у которых не было слияния с master веткой)
Возврат на предыдущие версии проекта
git checkout номер_хеша # Вернуться к указанному хешу
git log # Смотреть коммиты и хеши
git checkout master # Вернуться к последнему комиту
git commit --amend # Изменить последний комит
git reset --hard HEAD~2 # Вернуться на 2 комита назад, уничтожив последние 2 комита
git reset --soft HEAD~3 # Уничтожить первые 3 комита и сделать 4-й первым
Hастройка логина в GitHub через SSH Key
На Linux
ssh-keygen # Генерируем ключи SSH на локальном компьютере
cat ~/.ssh/is_rsa.pub # Смотрим ключ и копиркем его
Далее вставляем его на github>settings>SSH and GPG keys>New SSH key
git remote -v # Проверить какой ссылкой соединён репозиторий https или SSH
git remote set-url origin git@ссылка.git # Назначить соединение по SSH
На Windows
Запускаем утелиту Git bash
ssh-keygen # генерируем ключи SSH
По аналогии с Linux копируем is_rsa.pub
Полный алгоритм работы с Git и GitHub
git clone git@github.com:AnatoliiKyrylenko/temper.git # клонируем проект к себе
git checkout -b Имя_task # Создаём ветку для себя и переключаемся на неё
Редактируем, добавляем код.
git add . # Добавить все изменения
git comit -m "коментарий" # Сделать коммит (снапшот проекта)
git push origin # Даст ошибку так как нет ещё вашей ветки на github
git push --set-upstream origin Имя_ветки # Создаст ветку на github и зальёт туда проект
Compare & pull request>Crwate pull request # В меню github для проверки ваших изменений
git branch -d имя_ветки # Стереть локальную ветку, после добавления её в master
git push origin --delete Имя_task # Стереть удалённую ветку
Такого базового функционала хватит для выполнения большинства задач типичного Системного Администратора.
LEAVE YOUR COMMENT