Основы Unix / 2.1. Что такое Git и зачем он нужен


Видео


Git

В процессе разработки программных продуктов Вы постоянно будете добавлять что-то новое и менять что-то старое в своих проектах.

А если Вы вдруг ошибетесь и Вам нужно вернутся в прошлое? Здесь Вам поможет git. Он позволит вернуть Вам часть кода к старому виду.

Но git - это нечто большее, чем просто машина времени для вашего кода. Он позволяет Вам совместно работать с другими людьми над одним и тем же кодом.

Кроме того Вы сможете вести параллельную разработку нескольких версий благодаря ветвям.


Git уже здесь

git уже по-умолчанию встроен в операционную систему macOS. В Linux Вы можете использовать команду apt-get install git.

А теперь перейдём в терминале (его для этого даже нужно открыть) на рабочий стол и создадим папку git-project:

  1. cd Desktop
  2. mkdir git-project
  3. cd git-project

Добавим файл в разметке markdown (о ней Мы расскажем Вам позднее) для описания проекта: touch README.md.


Терминальный редактор текста vim

На серверах без графической оболочки Вам часто придётся пользоваться этим редакторам для внесения изменений.

Откроем созданный файл с его помощью: vim README.md

Чтобы войти в режим редактирования нажмите английскую клавишу i.

Введите наверху файла ### Мой первый git-проект

Вы такая умничка :)

Теперь выйдите из режима редактирования, нажав клавишу esc.

Теперь надо набрать двоеточие :.

Так vim переведет Вас в режим ввода команды. Введите wq для выхода с сохранением файла.

Вы нашли выход из vim. Наши поздравления. Не многим удаётся покинуть vim.


Команды Git

Напишите команду git status и Вы увидите сообщение о том, что здесь нет git-репозитория:



Чтобы дать git отслеживать эту директорию, введите git init. Если все прошло успешно, то Вы увидите сообщение. Повторите команду git status, чтобы узнать, что теперь репозиторий существует.



Почему наш файл отображается красным? Потому что он мертв, Джим, не добавлен в отслеживание!
Добавим его командой: git add README.md

Теперь сделаем наш первый коммит в систему отслеживания версий:
git commit -m "Наше сообщение"
Можете написать вместо этого сообщения любое другое.

Теперь зайдите в файл README.md и добавьте еще один заголовок ##### Я есть новый заголовок чуть ниже данного:



Если Вы наберете git status вновь, то увидите, что дело дрянь есть изменения в файлах и было бы круто их закомиттить.

Чтобы отправить файлы в коммит, Вам нужно добавить их командой git add README.md, так как в нем есть изменения.

Теперь введите git commit -m "Ваше вдохновляющее сообщение" и все изменения будут внесены в систему контроля версий.

 


Еще больше команд богу команд

Введите git log и Вы увидите историю Ваших обновлений в git:



Предположим, что всё, что Вы так упорно программировали сегодня, оказалось фигней. Нам нужно откатиться назад. Для этого есть команда git checkout [коммит], где вместо коммита подставьте первые 7 символов версии из истории Выше:

А теперь создадим нашу первую ветвь: git checkout -b myFirstBranch  

Вы на пути к смыслу жизни программиста:

  1. Вырастить ветвь;
  2. Посадить зрение;
  3. Построить велосипед из костылей.

Продолжаем:

  1. Создайте файл main.js -> touch main.js
  2. Проверьте статус гит -> git status
  3. Добавьте файл в отслеживание -> git add main.js
  4. Закомитьте его -> git commit -m "Добавил немного скриптов"
  5. К Вам приходит друг и спрашивает: "WTF? Зачем Ты добавил этот странный код сюда? Удаляй!"
  6. Проверьте историю версий git -> git log
  7. Откатитесь к старой версии -> git checkout [7 символов коммита]

 


Добавление множественных файлов

  1. Измените что-то в файле README.mdна Ваше усмотрение
  2. Добавим три новых файла -> touch 1.js 2.html 3.php
  3. Для добавления в коммит всех новых и измененных файлов используйте -> git add -A
  4. Сделайте коммит -> git commit -m "Я сделал веб-сайт"

 


Настройка GitHub

GitHub - это система, использующая git для контроля версий с возможностью доступа из любой точки нашего бренного мира.

Зайдите на сайт GitHub

Если Вы ещё никогда здесь не были, то зарегистрируйтесь.

После регистрации нам нужно создать себе SSH-ключи для доступа по зашифрованному соединению. Для этого в нашем старом добром терминале введите команду:

  1. ssh-keygen -t rsa -b 4096 -C "ваша электронная почта, используемая в GitHub"
  2. Enter a file in which to save the key (/Users/Ваше имя пользователя/.ssh/id_rsa): [нажмите enter] - это задаст место хранения ключей по-умолчанию
  3. Enter passphrase (empty for no passphrase): [Введите кодовую фразу]
  4. Enter same passphrase again: [Повторите кодовую фразу]
  5. Запустите ssh - agent - eval "$(ssh-agent -s)"
  6. Измените конфигурационный файл его ~/.ssh/config для автоматической подгрузки ключей следующим образом:
    Host *
    AddKeysToAgent yes
    UseKeychain yes
    IdentityFile ~/.ssh/id_rsa
  7. Введите команду для добавления Вашего ключа в связку: ssh-add -K ~/.ssh/id_rsa

Добавляем ключ в GitHub

  1. копируем в буфер обмена наш ключ: pbcopy < ~/.ssh/id_rsa.pub
  2. Кликните на сайте по Вашему профилю и нажмите Settings
  3. Найдите в настройках пункт SSH and GPG keys и перейдите в него
  4. Нажмите New SSH key или Add SSH key
  5. В поле Title введите исчерпывающее описание для ключей
  6. В поле Key вставьте Ваш ключ
  7. Нажмите Add SSH key
  8. И если Вас спросят об этом, то введите пароль