В этом посте подготовил информацию, как использовать Git на боевом проекте начиная с запуска Git на рабочей машине и настройки локального репозитория до размещение изменений на удаленом репозитории с отправкой pull request в основной репозиторий.

Git мануал

Установка Git

  • Linux https://git-scm.com/download/linux
  • Windows https://git-scm.com/download/win
  • MacOS https://git-scm.com/download/mac

При установке выбираем «Использовать Git из командной строки» (Use Git from… the Command Prompt).

Стартовые настройки

Откройте терминал и выполните команду:

git --version

В ответе увидите сообщение:

git version 2.25.1 #версия вашего GIT

Основные данные о вашем профиле хранятся в файле .gitconfig, чтобы другие разработчики понимали с кем они работают внесети туда данные.

Для этого выполните следующие команды:

git config --global user.name "YouNikName" --напишите в кавычки свой ник или имя
git config --global user.email youmail@youmail.com --напишите свой e-mail

Проверяем, что получилось:

git config --list

В вывводе увидите свои данные внесенные в конфиг GIT.

Создание нового репозитория

GIT хранит свои файлы и историю прямо в папке проекта. Чтобы создать новый репозиторий, нам нужно создать директорию с проектом зайти в папку нашего проекта и выполнить команду init. В этой конкретной папке GIT создаст скрытую директорию .git, где будет храниться история репозитория и настройки.

Выполните следующие команды:

mkdir Desktop/git_project/
cd Desktop/git_project/
git init

Командная строка вернет примерно такой результат:

Initialized empty Git repository in /home/user/Desktop/git_project/.git/

Ваши файлы в GIT могут находится в одном из четырёх состояний:

  1. неотслеживаемый ,
  2. добавленный в индекс,
  3. изменённый,
  4. закоммиченный.

Изначально файлы находящиеся в вашем репозитории находятся в состоянии “неотслеживаемый”, чтобы GIT стал учитывать изменения в файле его нужно добавить в индекс и он меняет состояние на “добавленный в индекс”, если на этом этапе внести в него изменения он поменяет статус на “изменённый”, для того чтобы сохранить изменения и была возможность к ним вернуться мы сохранем их коммитом и он переходит в состояние “закоммиченный”.

Использование ключей SSH с GitHub

Откройте терминал и выполните команду:

$ ssh-keygen -t rsa

На консоль будет выведен следующий диалог:

Enter file in which to save the key (/home/user/.ssh/id_rsa):

Нажмите на клавишу Enter. Далее система предложит ввести кодовую фразу для дополнительной защиты SSH-подключения:

Enter passphrase (empty for no passphrase):

Этот шаг можно пропустить. При ответе на этот и следующий вопрос просто нажмите клавишу Enter.

После этого ключ будет создан, а на консоль будет выведено следующее сообщение:

Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
476:b2:a8:7f:08:b4:c0:af:81:25:7e:21:48:01:0e:98 user@localhost

The key's randomart image is:

+--[ RSA 2048]----+

|+.o.             |

|ooE              |

|oo               |

|o.+..            |

|.+.+..  S .      |

|....+  o +       |

|  .o ....        |

|  .  .. .        |

|    ....         |

+-----------------+

Далее выполните в терминале команду:

$ cat ~/.ssh/id_rsa.pub

На консоль будет выведен ключ. Скопируйте его и вставьте в соответствующее поле GitHub

Создание нового удаленного репозитория

После создания локального репозитория нам нужно создать удаленный репозиторий на GitHub с которым мы будем работать. Есть два способа, как вы можете создать репозиторий в своем аккаунте на GitHub:

  1. Вы заходите в свой аккаунт и создаете новый репозиторий, довольно простая процедура, которую не вижу смысла описывать.
  2. Создание форка основного репозитория с которым вы собираетесь работать и последующаю отправка туда pull request (функция Github, позволяющая вносить изменения в ветку из других веток или репозиториев). В данном мануале будем использовать именно этот вариант.

Выполните следующие шаги:

  1. Зайдите на основной репозиторий https://github.com/freecode-academy/freecode.academy
  2. В правой верхней части страницы есть три кнопки Watch, Star, Fork. Вам нужно нажать кнопку Fork в вашем аккаунте появится новый репозиторий.
  3. Склонируйте ваш репозиторий в локальный репозиторий, для этого выполните следующие шаги в командной строке:
cd Desktop/git_project/ -- перейдите в папку вашего проекта
git clone git@github.com:YouName/YouFork.git -- в команду git clone вставьте ссылку вашего форка (ссылка находиться в вашем репозитории зеленая кнопка Code)

Определение состояния

Полезна команда git status позваляет вам определить в каком состоянии вы находитесь в любой непонятной ситуации вызывайте git status:

В терминале выполните следующую команду:

git status

Если нет изменений вывод будет примерно такой:

На ветке Master
Ваша ветка обновлена в соответствии с «origin/Master».
нечего коммитить, нет изменений в рабочем каталоге

Если есть изменения вывод будет примерно такой:

На ветке master
Ваша ветка обновлена в соответствии с «origin/master».
Неотслеживаемые файлы:
  (используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит)
	_posts/2020-06-22-git-manual.md
ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте «git add», чтобы отслеживать их)

Обычная отправка коммитов в ваш удаленный репозиторий

Если вы изменили в файлы в проекте и хотите отправить сохраненные изменения в свой репозиторий на GitHub.

Вам нужно выполнить следующие команды:

git add . # добавляем в индекс все измененные файлы
git commit -m "My first commit" # отправляем коммит и пишем название вашего коммита
git push # отправляем изменения в удаленный репозиторий

Продвинутая отправка коммитов в удаленный репозиторий

Название “продвинутый” будет описывать алгоритм отправки измененний в основной репозиторий из которого вы делали fork для того чтобы ваши изменения могли внести в основной репозиторий. Здесь мы используем имменно такой алгоритм отправки коммитов перед началом работой с задачей вам нужно ознокомиться с этим алгоритмом и предерживаться его.

  1. Перед началом выполнения задачи вам нужно переключиться в ветку мастер и сделать git pull с основного проекта для того чтобы обновить коммиты, которые появились на основном проекте.

Выполните следующие команды:

git branch

В моем случае вывод такой:

* LineBreak
  master

Я нахожусь в ветке LineBreak

Чтобы переключиться на master выполняем следующую команду:

git checkout master

В моем случае вывод такой:

Переключено на ветку «master»
Ваша ветка обновлена в соответствии с «origin/master».

Далее выполняем следующую команду:

git pull git@github.com:freecode-academy/freecode.academy.git master -- загружаем все изменения с основного проекта
  1. Создаем новую ветку.

Выполните следующую команду:

git checkout -b YouBranch -- создаем новую ветку и заходим в нее (YouBranch  меняем на ваше название)
  1. Добовляем измения в индекс, коммитим и делаем пуш в гитхаб.
git add . # добавляем в индекс все измененные файлы
git commit -m "My first commit" # отправляем коммит и пишем название вашего коммита
git push origin branchname # отправляем изменения в удаленный репозиторий
  1. Отправляем pull request (функция Github, позволяющая вносить изменения в ветку из других веток или репозиториев).

Чтобы создать Pull Request, зайдём на страницу вашего форка в GitHub. Справа внизу после названия вашего форка, есть вкладка Pull request заходите в нее, если у вас есть коммит для отпрваки вы увидите окно с заголовком и комментарием там будет стоять название вашего коммита с правой стороны будет зеленая кнопка «New pull request» нажимаете эту кнопку ваш pull request будет отправлен. Проверить отправку можно в основном проекте заходите в основной проект во вкладке Pull request будут отображаться цифры с отправленными pull request, если вы туда зайдете сможете увидеть свой pull request.

  1. После принятия pull request локально удаляете эту ветку и забываете про нее.

Для этого выполните следующую команду:

git branch -D YouBranch -- YouBranch  меняем на ваше название

Перекинуть коммиты из созданной ветки в основную main

  1. Сначала необходимо переключиться на ветку main с помощью команды git checkout main.
  2. Затем нужно выполнить команду git merge <название_ветки> для слияния созданной ветки с веткой main. Вместо <название_ветки> следует указать название созданной ветки.
  3. После этого можно отправить изменения на удаленный репозиторий с помощью команды git push origin main.
  4. Если возникнут конфликты при слиянии, необходимо разрешить их вручную и выполнить команду git add для добавления измененных файлов в индекс, а затем выполнить команду git commit для создания нового коммита с исправленными конфликтами.
  5. После разрешения конфликтов можно отправить изменения на удаленный репозиторий с помощью команды git push origin main.

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

Удалению папки idea из Github

  1. Перейдите в папку, в которой расположен ваш клонированный репозиторий. Для этого используйте команду «cd [путь к папке]».
  2. Введите команду: git rm -r –cached .idea/ Эта команда удалит папку «idea» из репозитория, но оставит ее в вашей файловой системе.
  3. Зафиксируйте изменения с помощью команды: git commit -m «Удалена папка idea».
  4. Отправьте изменения в удаленный репозиторий при помощи команды: git push.
⤧  Previous post GA запросы для анализа страниц ⤧  Next post Visual Studio Code горячие клавиши