Перейти к содержанию

Приветствуем в 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

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

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

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 -t ed25519 -C "your_email@example.com"

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/gitflic_user/.ssh/id_ed25519):
Created directory '/home/gitflic_user/.ssh'.
Enter passphrase (empty for no passphrase): (оставьте пустым, нажмите Enter)
Enter same passphrase again:
Your identification has been saved in /home/gitflic_user/.ssh/id_ed25519.
Your public key has been saved in /home/gitflic_user/.ssh/id_ed25519.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_ed25519.pub

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

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

git clone

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

Пример клонирования проекта в текущую директорию по https-протоколу:

git clone https://gitflic.ru/project/user/project.git

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

git clone git@gitflic.ru:user/project.git

git add

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

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

git add .

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

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>

Если для параметра <remote> указать значение 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 log

Команда git log используется для просмотра и анализа истории коммитов в репозитории Git.

git log
- Отображает историю коммитов в репозитории, начиная с последнего коммита. Коммиты отображаются в хронологическом порядке, с наиболее новым коммитом наверху.
git log <путь>
- Отображает историю коммитов для указанного файла. Важно: команда показывает только те коммиты, которые вносят актуальные изменения в указанный файл. Если изменения файла были отменены в последующих коммитах, такие коммиты не будут отображаться. Это связано с тем, что данная команда анализирует изменения относительно текущего состояния файла.

Чтобы отобразить полный граф изменений и найти коммиты, которые могли быть отменены, используйте:

git log --all --decorate --oneline --graph
Коммиты, не влияющие на конечный результат, пропускаются. Подробнее в разделе Различия в отображении истории коммитов.

git log --oneline
- Отображает краткое описание каждого коммита в одной строке. Это может быть полезно, когда вы хотите получить общую информацию о коммитах без дополнительных деталей.
git log --graph
- Отображает историю коммитов в виде графа. Это позволяет легко визуализировать разветвления и слияния веток и понять, какие коммиты влияют на другие.

git log --author=<имя>
- Отображает только коммиты, сделанные указанным автором. Это полезно, когда вы хотите изучить историю коммитов для конкретного участника проекта.
git log --since=<дата>
- Отображает коммиты, сделанные после указанной даты. Это может быть полезно, когда вы хотите изучить коммиты, сделанные после определенного события или релиза. Это только небольшой набор аргументов команды git log. Также можно использовать различные опции, такие как форматирование вывода, ограничение отображаемого количества коммитов и другие.

Вы можете узнать больше о команде git log, используя команду:

git help log