В этой статье я поясню как осуществить первые шаги к работе с Git на Ubuntu. Ниже на изображении показано взаимодействие локальной копии репозитория с удаленной при использовании тех или иных команд.

working-with-git-on-ubuntu

 

Первым делом установим git в свою систему

$ sudo apt-get install git-core git-gui git-doc

Теперь пришло время сгенерировать ssh ключ, а после этого персонализировать свой git.

$ ssh-keygen -t rsa -C "your_email@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
43:a2:d2:a5:c3:bb:dd:17:43:ad:8a:93:b2:a2:9b:5b your_email@gmail.com
The key's randomart image is:
+--[ RSA 2048]----+>
| .. |
| + .. |
| + o ++ |
| .o ++ ..|
| R .=o + +|
| ...o * |
| .. + .|
| ... . |
| E+o |
+-----------------+
$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "your_email@gmail.com"

Следующим шагом будет добавление нашего закрытого ключа в аккаунт на Github для авторизации и работой со своими репозиториями. Содержимое файла /home/username/.ssh/id_rsa необходимо добавить в список авторизированых ключей в настройках своего аккаунта Github на вкладке SSH Keys.

Добавление ssh ключа Github

Добавление ssh ключа Github

Теперь можно пробовать подключатся к Github и произвести инициализацию git’a в текущей директории.

$ ssh -T git@github.com
$ git init

Если все удалось — клонируем на локальную машину репозиторий (ссылка для клонирования находится в правой боковой панели на главной странице репозитория «SSH clone URL»)
Учтите что при клонировании репозитория на локальную машину, в той директории в которой вы сейчас находитесь и будет создана поддиректория с данным репозиторием, потому если вы сейчас находитесь в каком то /etc/ntpd/ или /home/username/.ssh/ — перейдите сразу в /home/username/ для удобства.

git clone git@github.com:username/TEST-REPO.git

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

cd TEST-REPO

Можно посмотреть статус репозитория командой

git status

Вот собственно и все, работу мы начали, а далее дело опыта. Приведу несколько основных команд для работы с git (который собственно и изображены на картинке в начале поста)
Допустим мы внесли правки в файлах проекта и теперь хотим подтвердить их, этим самым внести в репозиторий. Выполняем коммит.

$ git commit -m "Произвольный комментарий о внесенных правках в проект"

Локальных коммит сделали, а теперь необходимо отправить его в удаленный репозиторий (команда push)

$git push

Для того что бы получить обновления файлов внесенные например вашим коллегой в репозиторий (или вами же, на другом ПК) используем pull.

$git pull

Создадим ветку (branch). Используется для того, что бы вести разработку в dev ветке, при этом не заливая непроверенный код в master ветку.

$ git branch dev

Переключимся на ветку dev.

$ git checkout dev

Сольем в текущую ветку, все содержимое ветки master (и начнем работать с кодом начиная с последней версии но в отдельной ветке, а когда разработка будет завершена и код оттестирован — мы зальем содержимое ветки dev обратно в master.

$ git merge master

Вот собственно и все. Ниже приведу еще несколько команд, без подробных пояснений.
Отмена локальных изменений

$ git checkout .

Добавить в индекс

$ git add .

Удалить из индекса

$ git reset HEAD^

Откатится до определенного коммита

$ git reset --hard b05a808

Переименовать вертку (branch)

$ git branch -m new-branch-name old-branch-name

Удалить ветку

$ git branch -d

Показать все бранчи

git branch -a

Так же, хочу отметить. При разработке на 2 ПК (один Windows, другой Linux или MacOS) — появляется проблема с переносами ‘CRLF’, и сделать чистый pull не всегда удается, git ругается на то, что локальные файлы были изменены и Pull затрет эти изменения, просит выполнить git stash. Так вот, можно выполнять git stash перед каждым pull’ом, а можно воспользоватся следующей командой.

git config --global core.safecrlf true

Если после этого возникнут проблемы с push операциями — верните все обратно, сменив в команде значение true на false и ищите другое решение.