You are here

Знакомство с GitHub и локальным репозиторием

Linux: 

GitHub первое знакомство, основы

В этой статье разберем:
  • Что такое GitHub и для чего он нужен?
  • Как создать свой локальный репозиторий GitHub в Linux
  • Как восстановить сохраненную копию проекта
  • Некоторые полезные команды
  • Регистрацию на оф. сайте и создание первого репозитория

Все примеры и описания ниже приведены на 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

  1. sudo apt update
  2. sudo apt install git

Дальше нам надо указать свое ФИО (или Ник), а так же почтовый ящик. Для того, чтобы знать кто автор:

  1. git config --global user.name "DebUser"
  2. git config --global user.email "user@localhost"

Чтобы просмотреть эти данные, можно прописать следующее:

  1. git config -l
  2. user.name=DebUser
  3. user.email=user@localhost

Дальше нам надо создать корневую директорию для нашего проекта. Допустим в разделе "home/user/Документы/":

  1. mkdir github
  2. cd github

Инициализируем наш локальный репозиторий для GitHub (точка после init означает, весь каталог):

  1. git init .
  2. Инициализирован пустой репозиторий Git в /home/user/Документы/github/.git/

Проверяем статус:

  1. git status
  2. На ветке master
  3.  
  4. Еще нет коммитов
  5.  
  6. нечего коммитить (создайте/скопируйте файлы, затем запустите «git add», чтобы отслеживать их)

Создадим файл с неким простым кодом Python:

  1. echo 'print("Hello world!")' > python.py

* данная строчка создаст файл python.py, внутри которого будет написан код программы "print("Hello world!")". Это самая простая программа на Python. Условно примем этот код, как код который мы разрабатываем уже не первую неделю и нам надо его сохранить)))

Проверим еще раз статус и увидим совсем другую картину:

  1. git status
  2. На ветке master
  3.  
  4. Еще нет коммитов
  5.  
  6. Неотслеживаемые файлы:
  7. (используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит)
  8.  
  9. python.py
  10.  
  11. ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте «git add», чтобы отслеживать их)

Подготовим файл к коммиту и проверим статус (add * - означает, все файлы. Можно "." или "files"):

  1. git add *
  2. git status
  3. На ветке master
  4.  
  5. Еще нет коммитов
  6.  
  7. Изменения, которые будут включены в коммит:
  8. (используйте «git rm --cached <файл>…», чтобы убрать из индекса)
  9.  
  10. новый файл: python.py

Делаем коммит, точнее снимок нашего файла с данными:

  1. git commit -m "My progect One"
  2. [master (корневой коммит) b5dcb9a] My progect One
  3. 1 file changed, 1 insertion(+)
  4. create mode 100644 python.py

Проверить реестр коммитов:

  1. git log
  2. commit b5dcb9a1944c15ae47b182e7fa9688d7596bb071 (HEAD -> master)
  3. Author: DebUser <user@localhost>
  4. Date: Wed Sep 25 15:03:16 2019 +0500
  5.  
  6. My progect One

Проверяем статус:

  1. git status
  2. На ветке master
  3. нечего коммитить, нет изменений в рабочем каталоге

Что мы сделали и какой статус для Git:

  • "Untracked" создали файл
  • "Staged" git add file.py
  • "Copy in Local Repository" git commit -m "Version 01"

3. Как восстановить сохраненную копию

Рассмотрим ситуацию: мы случайно испортили код, и внесли в него не те данные. Проверяем статус и видим, что Git у нас на стадии "Untracked" (ждет когда мы сделаем "Staged" и "Copy in Local Repository"). Мы понимаем, что этот код испорчен и нам нужно все вернуть обратно. Сам Git нам это подсказывает, спрашивая нас:

  • (используйте «git add …», чтобы добавить файл в индекс)
  • (используйте «git checkout -- …», чтобы отменить изменения

мы отменяем изменения, указав второй вариант. И проверяем статус. В результате файл в прежнем состоянии. А теперь подробнее:

  1. echo 'php cod hahaha' >> python.py
  2.  
  3. cat python.py
  4. print("Hello world!")
  5. php cod hahaha
  6.  
  7. git status
  8. На ветке master
  9. Изменения, которые не в индексе для коммита:
  10. (используйте «git add <файл>…», чтобы добавить файл в индекс)
  11. (используйте «git checkout -- <файл>…», чтобы отменить изменения
  12. в рабочем каталоге)
  13.  
  14. изменено: python.py
  15.  
  16. нет изменений добавленных для коммита
  17. (используйте «git add» и/или «git commit -a»)
  18.  
  19. git checkout -- python.py
  20.  
  21. cat python.py
  22. print("Hello world!")
  23.  
  24. git status
  25. На ветке master
  26. нечего коммитить, нет изменений в рабочем каталоге

4. Некоторые полезные команды

Просмотрим 2 последних коммита (git log -2):

  1. git log -2
  2. commit b5dcb9a1944c15ae47b182e7fa9688d7596bb071 (HEAD -> master)
  3. Author: DebUser <user@localhost>
  4. Date: Wed Sep 25 15:03:16 2019 +0500
  5.  
  6. My progect One

* Очень полезна, если у нас из пару сотен. На выводе отразился один, так как он один. Значение можно менять цифрой.

Как посмотреть внесенные изменения в сам коммит (git log -1 -p):

  1. git log -1 -p
  2. commit b5dcb9a1944c15ae47b182e7fa9688d7596bb071 (HEAD -> master)
  3. Author: DebUser <user@localhost>
  4. Date: Wed Sep 25 15:03:16 2019 +0500
  5.  
  6. My progect One
  7.  
  8. diff --git a/python.py b/python.py
  9. new file mode 100644
  10. index 0000000..f1a1813
  11. --- /dev/null
  12. +++ b/python.py
  13. @@ -0,0 +1 @@
  14. +print("Hello world!")

Если мы хотим просмотреть, какие изменения будут направленны в новый коммит (git diff --staged):

  1. cat python.py
  2. print("Hello world!")
  3.  
  4. echo 'new string' >> python.py
  5.  
  6. cat python.py
  7. print("Hello world!")
  8. new string
  9.  
  10. git add .
  11.  
  12. git diff --staged
  13. diff --git a/python.py b/python.py
  14. index f1a1813..bfebd39 100644
  15. --- a/python.py
  16. +++ b/python.py
  17. @@ -1 +1,2 @@
  18. print("Hello world!")
  19. +new string

Допустим в нашей директории проекта, есть файлы логов или иного мусора. И мы не хотим делать им коммит. Для этого, в директории проекта создаем файл ".gitignore" и прописываем в нем (столбиком) файлы, которые надо игнорировать. Можно маску файла типа "*.log" или каталог "log/":

  1. nano .gitignore
  2. cat .gitignore
  3. *.log
  4. log/
  5. *.txt
  6.  
  7. git add .
  8.  
  9. git commit -m "add file ignor"

* не забываем, что сам файл ".gitignore" нужно сделать коммит.

5. Регистрация на оф. сайте и создание первого репозитория

Основной сайт проекта: github.com
Страница регистрации: https://github.com/join?source=header-home

Первое что необходимо сделать, это регистрация. Как регистрироваться на данном проекте, полно видео на YouTub, смысла повторять этого нет. После регистрации, входим в личный кабинет GitHub:

входим в личный кабинет GitHub

На главном окне будет большая кнопка "Start a project", нажимаем и попадаем в раздел создания первого репозитория "Create a new repository". Основные поля для заполнения:

  • Owner: тут отражается ваше корневое имя в системе GitHub
  • Repository name: тут надо указать имя проекта или его название, к примеру "newproject"
  • Public & Private: тут выставляете какой репозиторий вам нужен (Платный или Бесплатный), мы выбираем бесплатный "Public".
  • Галочка "Initialize this repository with a README": если вы хотите, по умолчанию будет создан файл README в корне вашего проекта.

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

Дальше нажимаем "Create repository". Все, мы создали свой первый репозиторий на GitHub. Читаем продолжение во второй статье.

Источник: http://linuxsql.ru