README.md

Приветствуем в GITFLIC

Итак, вы решили начать использовать git ,но не знаете с чего начать? Данную документацию можно использовать в качестве настолько пособия и обращаться по возникающим вопросам. Для начала вам следует создать свой проект. Когда вы создали свой новый репозиторий, необходимо подготовить локальное рабочее пространство. Используйте консоль на вашем ПК для работы.

Для большего удобства, пользователям Windows, рекомендуем установить отдельную консоль для работы с git. В поисковике запросом “Git для Windows” выбрать предпочитаемый и установить его.

Когда откроете консоль, выполните следующие команды для создания локальной директории для вашего будущего репозитория:

Создание локальной директории

cd ~/
mkdir repos
cd ~/repos

После выполнения предыдущих команд следует указать свои данные, выполнив следующие команды:

Глобальные настройки Git

git config --global user.name "gitflic-user"
git config --global user.email "mail@gitflic.ru"

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

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

git clone http://gitflic.ru/project/user/proekt.git //Здесь ссылка на ваш проект
cd proekt
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Использовать существующую директорию

cd existing_folder
git init
git remote add origin http://gitflic.ru/project/user/proekt.git //Здесь ссылка на ваш проект
git add .
git commit -m "Initial commit"
git push -u origin master

Запушить существующий репозиторий

cd existing_folder
git remote rename origin old-origin
git remote add origin http://gitflic.ru/project/user/proekt.git //Здесь ссылка на ваш проект
git push -u origin --all
git push -u origin --tags

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

Для создания ветки и мгновенного переключения на новую ветку используется следующая команда, где omega, параметр -b указывает на ветку:

Как создать ветку в git

git checkout -b omega

Также можно выполнить то же самое действие в 2 команды, отдельно создать ветку, отдельно в нее переключиться:

git branch omega
git checkout omega

Распространенные опции для git branch

Вывод списка всех веток в репозитории.

git branch
или
git branch --list

Удаление ветки с названием omega. Это «безопасная» операция, так как git не позволит удалить ветку, в которой есть неслитые изменения. Данная команда удаляет только локальную ветку.

git branch -d omega

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

git branch -D <branch>
git push origin :refs/heads/<branch>

Вывод списка всех веток удаленного проекта.

git branch -a

Для визуализации файлов под управлением git существует расширение TortoiseGit. Оно имеет логичный интерфейс и отображает иконки к файлам, находящимся под управлением gitдля отображения их статуса в git.

Генерация публичного SSH ключа

Для работы с git многие серверы используют аутентификацию по ssh-ключу. Далее расскажем как создать свой ssh-ключ для работы с git. Процесс создания ssh-ключа аналогичен на всех ОС. Первым делом убедимся, что у вас отсутствует ssh-ключ на локальном компьютере, для этого выполните следующие команды:

cd ~/.ssh
ls

Ищите файл с именем id_dsa или id_rsa и одноименный файл с расширением .pub. Файл с расширением .pub — это ваш публичный ключ, а второй файл — ваш приватный ключ. Если указанные файлы у вас отсутствуют (или отсутствует директория .ssh), вы можете создать их используя команду:

cd ~/
ssh-keygen -o

Generating public/private rsa key pair.
Enter file in which to save the key (/home/gitflic_user/.ssh/id_rsa):
Created directory '/home/gitflic_user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/gitflic_user/.ssh/id_rsa.
Your public key has been saved in /home/gitflic_user/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:xx:yy:zz:96:93:49:da:9b:e3 gitflic_user@gitflic.ru

После создания вашего публичного ssh-ключа его необходимо прописать в настройках к git. Первым делом необходимо получить ssh-ключ из файла. Вы можете открыть ваш публичный ssh-ключ в текстовом редакторе и полностью скопировать содержимое, либо выполнить следующую команду в консоли:

cat ~/.ssh/id_rsa.pub

Когда скопируете ssh-ключ, пропишите его в настройках, укажите название для ключа, например my-ssh, оставьте поле со сроком годности пустым, тогда ваш ssh-ключ будет всегда активен. Нажмите сохранить и убедитесь что сохранение прошло успешно.

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

ssh-keygen -t ed25519 -C "your_email@example.com"

Возможные проблемы с работой по ssh.

В некоторых ситуациях возникать ошибка no mutual signature algoryth при использвании id_rsa.pub. Чтобы решить эту проблему, необходимо сгенерировать новый ssh-ключ по алгритму ED25519.

Распространенные команды при работе с git

git clone

Как правило при помощи команды git clone создается копия репозитория от указанного. Это делается в новой директории или в другом месте. Исходный репозиторий может находиться в локальной файловой системе или на удаленном устройстве, к которому можно получить доступ с помощью поддерживаемых протоколов.

Пример клонирования проекта в дерикторию folder по ssh-ключу:

git clone git@f.dev.gitflic.ru:user/how-to.git ./folder/

Аргумент -branch позволяет выбрать ветку для клонирования. В противном случае клонируется ветка, на которую указывает HEAD в удаленном репозитории (обычно главная ветка). Кроме того, для этих целей в команде можно задать тег вместо ветки:

git clone -branch new_feature git://remoterepository.git

git clone –bare Как и git init –bare, аргумент -bare при назначении команде git clone приводит к созданию копии удаленного репозитория без рабочего каталога. Это означает, что репозиторий будет содержать историю проекта, к которой можно выполнять запросы push и pull, но которую нельзя редактировать напрямую. Кроме того, в репозитории, клонированном с опцией -bare, не будут настроены удаленные ветки. Как и git init –bare, эта команда создает удаленный репозиторий, который разработчики не смогут редактировать напрямую.

git clone –mirror Вместе с аргументом –mirror команде неявно назначается и аргумент –bare. Поэтому можно сказать, что опция –mirror наследует поведение –bare, создавая чистый репозиторий без изменяемых рабочих файлов. Кроме того, –mirror клонирует ссылки удаленного репозитория и сохраняет конфигурацию отслеживания удаленных веток. Затем вы можете выполнить команду git remote update на созданном зеркале, в результате чего будут перезаписаны все ссылки из исходного репозитория. Так вы получите идентичные функциональные возможности для работы.

git add

Команда git add добавляет изменения рабочей директории в промежуточную область. Он сообщает git, что вы хотите включить обновления определенного файла в следующий коммит. Однако git add на самом деле не влияет на репозиторий каким—либо существенным образом - изменения фактически не записываются до тех пор, пока вы не выполните git commit.

Добавление всех изменений в следующий коммит выполняется следующей командой:

git add .

Чтобы добавить в следующий коммит только один измененный файл, то это делается командой, где - полное имя файла:

git add <file-name>

В сочетании с этими командами вам также понадобится git status для просмотра состояния рабочего каталога и промежуточной области:

git status

git commit

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

git commit

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

git commit -a

Данная команда создаст коммит с указанным комментарием. По умолчанию команда git commit открывает локальный текстовый редактор для ввода комментария к коммиту. При передаче параметра -m используется добавленный комментарий, минуя текстовый редактор:

git commit -m "commit message"

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

git commit --amend

git pull

Команда git pull запускает команду git fetch для загрузки содержимого из указанного удаленного репозитория. Затем выполняется команда git merge, осуществляющая слияние ссылок и указателей удаленного содержимого в новый локальный коммит:

git pull <remote>

Выше указанная команда берет указанную удаленную копию текущей ветви и объединяет ее с локальной копией. Это то же самое, что и git fetch <remote>, за которым следует git merge origin/<current-branch>.

Существует команда, подобная команде по умолчанию, только она не создает новый коммит со слитым содержимым:

git pull --no-commit <remote>

git push

Публикация указанной ветки в удаленном репозитории вместе со всеми необходимыми коммитами и внутренними объектами. Эта команда создает локальную ветку в репозитории назначения. Чтобы предотвратить перезапись коммитов, git не позволит опубликовать данные, если в репозитории назначения нельзя выполнить ускоренное слияние:

git push <remote> <branch>

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

Параметр -u аналогично –set-upstream указывает удаленную ветку “по умолчанию”, все последующие команды git pull/push будут автоматически общаться между текущей локальной и выбранной удаленной ветками. Данная команда указывается единожды, до тех пор, пока не понадобится указать другую удаленную ветку “по умолчанию”.

git push -u origin master

Существует процедура для очистки локальной и удаленной веток, которую целесообразно выполнять для поддержания порядка и не допущения накопления изменений, которые не будут загружены в основную ветку проекта:

git branch -D alpha
git push origin :alpha

Первая команда очистит локальную ветку alpha. Если в команде git push перед именем ветки поставить двоеточие, будет стерта удаленная ветка.

git merge

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

git revert

Эта команда отменяет внесенные в коммит изменения и добавляет новый коммит с обращенным содержимым. В результате история в git не теряется, что важно для обеспечения целостной истории версий и надежной совместной работы. К примеру вы хотите вернуть ваш рабочий процесс к коммиту 1f08a70, команда возврата будет выглядеть следующим образом:

git revert 1f08a70

git reset

Универсальная команда для отмены изменений. Другими словами, если вопрос какой командой создается новый коммит, применяющий изменения, обратные для указанного аргументом коммита? Следует внимательно ознакомиться с этой командой. У команды git reset имеется несколько опций, разберем следующие:

Параметр –soft сбрасывает указатель HEAD до указанного коммита:

git reset --soft 1f08a70

Параметр –mixed сброс указателя HEAD до выбранного коммита в истории и отмена изменений в индексе:

git reset --mixed 1f08a70

Параметр –hard сбрасывает указатель HEAD до выбранного коммита в истории, отмяет изменения в индексе и отменяет изменения в рабочем каталоге. Не используйте данный параметр, если не уверены в своих действиях:

git reset --hard 1f08a70

git log

Эта команда позволяет просмотреть и фильтровать историю проекта, а даже искать конкретные изменения. Для сравнения с git status можно просматривать рабочую директорию и раздел проиндексированных в ней файлов, в то время как git log показывает только историю коммитов проекта. Этот же журнал коммитов можно найти на странице проекта в gitflic.ru. Каждая запись будет состоять из 4-х частей: хеш коммита, автор коммита, дата и комментарий к коммиту. Пример ответа:

commit 9936edb7ba9af7bf2443xxx11129e66834b9c2fa (HEAD -> master, origin/master)
Author: gitflic_user <user@gitflic.ru>
Date:   Thu Jun 3 11:01:00 2020 +0300
    

git init

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

git init    

Пример ответа:

Initialized empty Git repository in /Users/user/path/project/.git/
Описание

Краткое знакомство с большинством распрастраненных команд Git. В частности в GitFlic

Релизы
1.0.0 2023-12-05
Конвейеры
0 успешных
0 с ошибкой