Система контроля версий — это незаменимая вещь при совместной разработке программного обеспечения. Такие программы позволяют отслеживать изменения в вашем исходном коде и при необходимости восстанавливать прошлое состояние.
Одной из самых популярных систем управления версиями заслуженно считается Git. Многие проекты хранят свои файлы в репозиториях Git, а сайты GitHub и Bitbucket сделали обмен исходным кодом очень простым. В этой небольшой статье будет рассмотрена установка Git в Ubuntu. Мы рассмотрим два способа установки, а также начальную конфигурацию.
Установка Git с помощью пакетного менеджера
Самый простой способ установить Git в Ubuntu 20.04 или других версиях, это использовать пакетный менеджер apt и официальные репозитории Ubuntu. Это самый быстрый и простой метод, но вы получите не самую свежую версию.
Для установки Git с помощью пакетного менеджера. сначала обновим списки пакетов из репозиториев:
sudo apt update
Затем осталось загрузить и установить программу:
Как скачать git репозиторий c github
sudo apt install git

После этого программа будет установлена и вы можете переходить к ее настройке. Для просмотра версии выполните:
Установка Git из исходных кодов
Более гибкий, но в то же время самый сложный способ установки Git в Ubuntu — это сборка из исходных кодов. Процесс установки займет больше времени, но вы получите больше контроля над параметрами программы, а также сможете установить самую последнюю версию.
Перед тем, как приступить нам нужно будет скачать пакеты, от которых зависит Git. Все есть в официальном репозитории, поэтому вы можете все сделать с помощью пакетного менеджера:
sudo apt update
sudo apt install build-essential libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip
После того как все будет установлено вы можете скачать архив с самыми последними версиями исходного кода. Это можно сделать на странице релизов. Здесь есть как rc релизы, так и стабильные версии.

Когда выберите версию, нажмите кнопку Download zip. Или же скопируйте ссылку чтобы скачать с помощью терминала. Например, на данный момент самая последняя версия — 2.10.1. Вы можете использовать адрес файла вместе с wget, чтобы скачать исходники:
wget https://github.com/git/git/archive/v2.28.0.zip -o git.zip
Распакуйте только что загруженный файл с помощью unzip и переместитесь в каталог с файлами архива:
unzip git.zip
cd git-*
Дальше переходим к сборке программы и ее установке:
make prefix=/usr/local all
sudo make prefix=/usr/local install

После того как вы установили Git таким способом, вы можете просто ещё раз клонировать репозиторий и выполнить две последние команды для обновления. Для клонирования нужно знать URL репозитория. Например, для текущей ветки master, этот url будет выглядеть вот так:
git clone https://github.com/git/git
Затем просто соберите новую версию git с помощью тех же команд:
cd git
make prefix=/usr/local all
sudo make prefix=/usr/local install
После выполнения старая версия будет заменена новой. Причем, старые исходники сохранятся, так что в случае ошибок вы сможете восстановить старую версию. А теперь давайте рассмотрим как выполнить минимальную настройку Git, чтобы с программой можно было работать.
Настройка Git в Ubuntu
После того как установка Git Ubuntu будет завершена одним из выше перечисленных способов, вам нужно еще кое-что сделать перед тем, как вы сможете полноценно работать. Вам нужно идентифицировать себя указав имя пользователя и адрес электронной почты.
Самый простой способ это сделать — с помощью команды git config. Git использует имя пользователя и Email при каждом коммите, так что задавать их обязательно. Для этого выполните команды:
Вы можете посмотреть установленные параметры с помощью команды:
git config —list
Вся информация хранится в вашем конфигурационном файле Git, поэтому вы можете отредактировать его вручную если это необходимо с помощью текстового редактора:
Здесь можно установить много других параметров, но именно эти два самые важные, потому что если вы попытаетесь что-то сделать когда они не установлены, то увидите предупреждение:

Выводы
Теперь вы знаете как выполняется установка Git Ubuntu 20.04. Мы рассмотрели два способа — простой и быстрый, а также сложный, но более гибкий. Если у вас остались вопросы спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Источник: losst.pro
Как начать работать с GitHub
Добавить SSH ключи
После этого гитхаб должен перестать ругаться на отсутствие прав доступа.
Часто используемые команды
- git add файлы — добавляет файлы в индекс
- git commit — отправляет из индекса в хранилище для дальнейшей отправки (git push) в удаленный репозиторий
- git reset — файлы заменяет файлы в индексе файлами из последнего коммита
- git checkout файлы — заменяет файлы проекта ни диске файлами из индекса
- git push origin master — отправляет файл на сервер, чтобы не вводить каждый раз логин/пароль, воспользуйтесь флагом ‘-u’
Чтобы создать новую ветку, нужно использовать команду git branch [Название_ветки] . Если написать просто git branch — покажет список существующих веток.
git checkout [Название ветки] — выбор ветки
Чтобы создать ветку и сразу ее выбрать git checkout -b [Новая ветка]
Источник: mad-dog.ru
Как создать репозиторий на github
В статье также рассмотрено подключиться к созданному github репозиторию с локального компьютера и работать с проектом. Используется Ubuntu — с github можно работать также с любой другой Unix машины или Windows.

Установка git и создание локального репозитория
Работаем от имени пользователя root. Прежде всего устанавливаем git
Заходим на https://github.com и создаем пользовательский аккаунт, также создаем в графическом интерфейсе первый репозиторий (называем его test)
В консоли Ubuntu задаем имя пользователя, работающего с git и его адрес электронной почты.
git config — global user.name «exampleuser»
Создаем локальный каталог, который будет служить репозитоирем
переходим в каталог
Initialized empty Git repository in /home/admin/IT/python/py/.git/
После выполнения команды в каталоге появляется директория .git, в которой размещаются файлы. необходимые для корректной работы пакета
Как создать репозиторий на github и подключиться к нему
Далее нужно создать репозиторий на github в интерфейсе по ссылке.

Для репозитория выбирается имя, тип Public
Возвращаемся в консоль и добавляем рептозиторий в системе (подключаемся к удаленному). После адреса сайта указываем имя пользователя, затем — через / — название репозитория, .git
git remote add origin https://github.com/exampleuser/test.git
Далее пробуем передать данные из локального репозитория в удаленный
При этом возникает ошибка:
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Из ее текста следует, что не добавлен SSH ключ и подключение к удаленному репозиторию невозможно.
Сгенерируем ключ и добавим его на github
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Вводим путь к ключу на сервере
Enter passphrase (empty for no passphrase):
Парольная фраза и ее повтор
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
72:d6:85:91:09:6d:61:ca:20:01:72:68:75:63:8b:9f [email protected]
The key’s randomart image is:
+—[RSA 4096]—-+
|..+oo=. .o++ |
|.+ +.oo o=o |
|. . . o.. . |
| . . . . |
| E. S . |
| + |
| |
| |
| |
+——————+
Вывод аналогичный приведенному выше будет означать, что ключ сгенерирован
Добавляем его в .ssh/id_rsa
Identity added: /root/.ssh/id_rsa (rsa w/o comment)
Копируем ключ, начинающийся с ssh-rsa и вставляем его в соответствующее поле в личном кабинете на github

Выбираем ‘SSH and GPG keys’

Далее New SSH key (на скриншоте ключ уже добавлен)
После этого вновь пробует отправить данные
Counting objects: 3, done.
Writing objects: 100% (3/3), 216 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:exampleuser/testrepo.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
Все получилось — данные были успешно переданы в созданный репозиторий на github.
Проверяем, создаем файл и добавляем в него произвольный текст (в данном случае добавлен ‘some text’)
Добавляем измененный файл
Файлы можно добавлять по одному, можно добавлять все сразу — команду можно выполнить вслед за предыдущей она ее продублирует
Делаем коммит, указывая после ключа -m комментарий
Здесь система попросит ввести логин пользователя на github и его пароль
Username for ‘https://github.com’: exampleuser
Password for ‘https://[email protected]’:
Как только мы это сделаем отображаются следующая информация:
Counting objects: 3, done.
Writing objects: 100% (3/3), 215 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/exampleuser/test.git
* [new branch] master -> master
Теперь меняем содержимое единственного файла в репозитории — добавляем еще одну строку
git commit -m ‘Second commit’
[master c5b2de5] First commit
1 file changed, 2 insertions(+), 1 deletion(-)
и снова передаем информацию на github
Username for ‘https://github.com’: exampleuser
Password for ‘https://[email protected]’:
Counting objects: 3, done.
Writing objects: 100% (3/3), 253 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/exampleuser/test.git
1273b8c..c5b2de5 master -> master
В интерфейсе аккаунта на сайте можно видеть добавленный файл, коммиты и комментарии
При невыполнении предложенного порядка действий будут возникать ошибки, информация корректно передаваться не будет.
Если не добавить
перед коммитом можно увидеть следующее сообщение, выделенное в консоли красным цветом:
On branch master
Changes not staged for commit:
modified: FILE.txt
no changes added to commit
Все системные сообщения очень информативны — в частности, при попытке «пушнуть» на github неизмененные файлы возникает сообщение «Everything up-to-date«
Username for ‘https://github.com’: exampleuser
Password for ‘https://[email protected]’:
Everything up-to-date
Создаем файл password и добавляем в него произвольное содержимое
git commit -m «added one more file»
[master c2a671f] added one more file
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 password
Отправляем информацию в удаленный репозиторий
Username for ‘https://github.com’: exampleuser
Password for ‘https://[email protected]’:
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 318 bytes | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To https://github.com/exampleuser/test.git
c5b2de5..c2a671f master -> master
Отмена коммитов с отменой изменений, внесенных в файлы, и без них
Рассмотрим возможность отмены сделанных коммитов до момента передачи данных на github. Меняем содержимое файла убирая, для примера, один символ
[master dded43f] new one
1 file changed, 1 insertion(+), 1 deletion(-)
Отменяем последний коммит следующей командой
Просматриваем файл и убеждаемся в том, что изменения в нем сохранились несмотря на отмену коммита
Делаем коммит снова
Сейчас отменяем его с ключом — hard, его использование означает, что будет отменен коммит и изменения, внесенные в файл
HEAD is now at c2a671f added one more file
Отправляем данные на github
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/exampleuser/test
* branch master -> FETCH_HEAD
c2a671f..d578a72 master -> origin/master
Updating c2a671f..d578a72
Fast-forward
password | 3 ++-
Клонирование репозитория с Github
Идем на другую машину (в тестовой среде был просто сменен пользователь командой su mailer, затем выполнен переход в его домашний каталог cd /home/mailer)
git clone https://github.com/exampleuser/test.git
Cloning into ‘test’…
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 10 (delta 0), reused 10 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), done.
Checking connectivity… done.
Переходим в каталог test
Редактируем файл password
git config — global user.name «testuser2017»
git commit -m «added by another user»
git commit -m «added by another user»[master d578a72] added by another user
1 file changed, 2 insertions(+), 1 deletion(-)
Отправляем на github
Username for ‘https://github.com’: exampleuser
Password for ‘https://[email protected]’:
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 293 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/exampleuser/test.git
c2a671f..d578a72 master -> master
Проверяем, что на github появилась информация о сделанном коммите, а файл обновился
Теперь авторизуемся на сервере с реквизитами пользователя от имени которого работа велась изначально и выполняем команду git pull origin master
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/exampleuser/test
* branch master -> FETCH_HEAD
c2a671f..d578a72 master -> origin/master
Updating c2a671f..d578a72
Fast-forward
password | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Просматриваем файл password — видим, что изменения сделанные и закоммиченные другим пользователем сохранились.