Все примеры и описания ниже приведены на Debian 10.
1. Что такое GitHub и для чего он нужен?
Это крупнейший веб-сервис для IT-проектов в рамках совместной работы. Или простым языком, это место хранения разработок (исходников, файлов и т.д.) программистов (не только), где они могут фиксировать разные версии на разных этапах, и при этом делать это вместе с другими программистами, работающими в рамках одного или схожего проекта. У этого проекта даже есть свой слоган «Social Coding», в переводе на наш язык «Пишем код вместе».
GitHub это не только место хранения исходных кодов программиста на C++, Python и т.д. Им пользуются люди далекие от этой темы, к примеру проекты 3D дизайна, графиков и т.д.
Какие проблемы решает GitHub:
Первое: вы пишите код на Python. Чтобы не терять исходный код или версии кода, вы делали копии этого кода или файлов. Все это зачастую в некотором хаосе. Возникает проблема, как найти код, который вы писали вчера, если у вас последний сохраненный вариант трех дневной давности, а новый код уже испорчен.
Второе: место хранения. Если вы делаете небольшой проект, то он может весть порядка 1-2 Мб или чуть больше. При создании копий, вы теряете не так много места на своем жестком диске. В наше время, это не особо и проблема. А если ваш проект весит 1 Тб, и вам нужно сделать 2-4 копии? Как быть?
Третье: как передать свой код, для разработки в команде. Вы разработали часть кода, но вам нужна помощь более опытного специалиста. Или вы хотите отправить свой код на тестирование или в основной проект.
Это самый малый пример, того что может решить GitHub. Все его преимущества вы оцените, только если начнете работать с ним. Большинство крупных компаний во всем мире, используют его (его аналоги) как один их основных инструментов при разработке.
2. Создадим локальный репозиторий GitHub в Linux
Установим Git в Linux Debian:
*если у вас нет прав root, ставьте с sudo
sudo apt update sudo apt install git
Дальше нам надо указать свое ФИО (или Ник), а так же почтовый ящик. Для того, чтобы знать кто автор:
git config --global user.name "DebUser" git config --global user.email "user@localhost"
Чтобы просмотреть эти данные, можно прописать следующее:
git config -l user.name=DebUser user.email=user@localhost
Дальше нам надо создать корневую директорию для нашего проекта. Допустим в разделе "home/user/Документы/":
mkdir github cd github
Инициализируем наш локальный репозиторий для GitHub (точка после init означает, весь каталог):
git init . Инициализирован пустой репозиторий Git в /home/user/Документы/github/.git/
Проверяем статус:
git status На ветке master Еще нет коммитов нечего коммитить (создайте/скопируйте файлы, затем запустите «git add», чтобы отслеживать их)
Создадим файл с неким простым кодом Python:
echo 'print("Hello world!")' > python.py
* данная строчка создаст файл python.py, внутри которого будет написан код программы "print("Hello world!")". Это самая простая программа на Python. Условно примем этот код, как код который мы разрабатываем уже не первую неделю и нам надо его сохранить)))
Проверим еще раз статус и увидим совсем другую картину:
git status На ветке master Еще нет коммитов Неотслеживаемые файлы: (используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит) python.py ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте «git add», чтобы отслеживать их)
Подготовим файл к коммиту и проверим статус (add * - означает, все файлы. Можно "." или "files"):
git add * git status На ветке master Еще нет коммитов Изменения, которые будут включены в коммит: (используйте «git rm --cached <файл>…», чтобы убрать из индекса) новый файл: python.py
Делаем коммит, точнее снимок нашего файла с данными:
git commit -m "My progect One" [master (корневой коммит) b5dcb9a] My progect One 1 file changed, 1 insertion(+) create mode 100644 python.py
Проверить реестр коммитов:
git log commit b5dcb9a1944c15ae47b182e7fa9688d7596bb071 (HEAD -> master) Author: DebUser <user@localhost> Date: Wed Sep 25 15:03:16 2019 +0500 My progect One
Проверяем статус:
git status На ветке master нечего коммитить, нет изменений в рабочем каталоге
Что мы сделали и какой статус для Git:
3. Как восстановить сохраненную копию
Рассмотрим ситуацию: мы случайно испортили код, и внесли в него не те данные. Проверяем статус и видим, что Git у нас на стадии "Untracked" (ждет когда мы сделаем "Staged" и "Copy in Local Repository"). Мы понимаем, что этот код испорчен и нам нужно все вернуть обратно. Сам Git нам это подсказывает, спрашивая нас:
мы отменяем изменения, указав второй вариант. И проверяем статус. В результате файл в прежнем состоянии. А теперь подробнее:
echo 'php cod hahaha' >> python.py cat python.py print("Hello world!") php cod hahaha git status На ветке master Изменения, которые не в индексе для коммита: (используйте «git add <файл>…», чтобы добавить файл в индекс) (используйте «git checkout -- <файл>…», чтобы отменить изменения в рабочем каталоге) изменено: python.py нет изменений добавленных для коммита (используйте «git add» и/или «git commit -a») git checkout -- python.py cat python.py print("Hello world!") git status На ветке master нечего коммитить, нет изменений в рабочем каталоге
4. Некоторые полезные команды
Просмотрим 2 последних коммита (git log -2):
git log -2 commit b5dcb9a1944c15ae47b182e7fa9688d7596bb071 (HEAD -> master) Author: DebUser <user@localhost> Date: Wed Sep 25 15:03:16 2019 +0500 My progect One
* Очень полезна, если у нас из пару сотен. На выводе отразился один, так как он один. Значение можно менять цифрой.
Как посмотреть внесенные изменения в сам коммит (git log -1 -p):
git log -1 -p commit b5dcb9a1944c15ae47b182e7fa9688d7596bb071 (HEAD -> master) Author: DebUser <user@localhost> Date: Wed Sep 25 15:03:16 2019 +0500 My progect One diff --git a/python.py b/python.py new file mode 100644 index 0000000..f1a1813 --- /dev/null +++ b/python.py @@ -0,0 +1 @@ +print("Hello world!")
Если мы хотим просмотреть, какие изменения будут направленны в новый коммит (git diff --staged):
cat python.py print("Hello world!") echo 'new string' >> python.py cat python.py print("Hello world!") new string git add . git diff --staged diff --git a/python.py b/python.py index f1a1813..bfebd39 100644 --- a/python.py +++ b/python.py @@ -1 +1,2 @@ print("Hello world!") +new string
Допустим в нашей директории проекта, есть файлы логов или иного мусора. И мы не хотим делать им коммит. Для этого, в директории проекта создаем файл ".gitignore" и прописываем в нем (столбиком) файлы, которые надо игнорировать. Можно маску файла типа "*.log" или каталог "log/":
nano .gitignore cat .gitignore *.log log/ *.txt git add . git commit -m "add file ignor"
* не забываем, что сам файл ".gitignore" нужно сделать коммит.
5. Регистрация на оф. сайте и создание первого репозитория
Основной сайт проекта: github.com
Страница регистрации: https://github.com/join?source=header-home
Первое что необходимо сделать, это регистрация. Как регистрироваться на данном проекте, полно видео на YouTub, смысла повторять этого нет. После регистрации, входим в личный кабинет GitHub:
На главном окне будет большая кнопка "Start a project", нажимаем и попадаем в раздел создания первого репозитория "Create a new repository". Основные поля для заполнения:
* Public - надо понимать, что проект общий и доступен для всех. Если вы хотите закрытый проект, то надо выбирать Private.
Дальше нажимаем "Create repository". Все, мы создали свой первый репозиторий на GitHub. Читаем продолжение во второй статье.
Источник: http://linuxsql.ru