Skip to content

amelinvladimir/git_course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Описание процесса работа с git репозиторием. Показан полный цикл работы с задачей.

На примере проекта https://github.com/amelinvladimir/git_course

Шаг 1. Скачать проект

Получаем адрес для скачивания: image

Команды git командной строки

# скачиваем проект
git clone [email protected]:amelinvladimir/git_course.git

# переходим в папку с проектом
cd git_course # переходим в папку с проектом

Скачать еще одну ветку из внешнего репозитория

Чтобы скачать ветку developer из внешнего репозитория и переключиться на нее выполняем команды:

# скачиваем ветку developer
git checkout -b developer origin/developer
branch 'developer' set up to track 'origin/developer'.
Переключились на новую ветку «developer»

# переключаемся на ветку developer
git checkout developer

Шаг 2. Создать ветку и переключиться на нее

Команды git командной строки

# создаем новую ветку
git branch IDVP-555

# переключаемся в новую ветку
git checkout IDVP-555

Plugin git vscode

image Указываем от какой ветки делаем ответвление image Указываем название новой ветки image

Шаг 3 (опциональный). Если нужно срочно переключиться на другую ветку, а в рабочей есть не закоммиченные изменения

Используется команда git stash

Команды git командной строки

Для демонстрации в ветке IDVP-555 один файл был изменен (model1.sql), один файл был удален (model2.sql) и один файл был создан (model3.sql).

Посмотрим текущие локальные не закоммиченные изменения командой git status:

git status
Текущая ветка: IDVP-555
Изменения, которые не в индексе для коммита:
  (используйте «git add/rm <файл>...», чтобы добавить или удалить файл из индекса)
  (используйте «git restore <файл>...», чтобы отменить изменения в рабочем каталоге)
	изменено:      model1.sql
	удалено:       model2.sql

Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
	model3.sql

индекс пуст (используйте «git add» и/или «git commit -a»)

Сохраняем локальные изменения без коммита с помощью команды git stash:

git stash push -m 'Начал добавлять расчет 2 показателей'
Рабочий каталог и состояние индекса сохранены On IDVP-555: Начал добавлять расчет 2 показателей

Видим, что изменения файла model1.sql отменено и удаленный файл model2.sql восстановлен. Созданный файл model3.sql остался без изменений.

git status
Текущая ветка: IDVP-555
Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
	model3.sql

индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)

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

git checkout main 

После того, как будут внесены нужные правки в ветку main и сделаны нужные коммиты, можно переключиться обратно в ветку IDVP-555.

git checkout IDVP-555 

Командой git stash list смотрим, какие есть сохраннные состояния. Мы сохранили только одно состояние и его видим в списке:

git stash list
stash@{0}: On IDVP-555: Начал добавлять расчет 2 показателей

Восстанавливаем изменения:

git stash pop        
Текущая ветка: IDVP-555
Изменения, которые не в индексе для коммита:
  (используйте «git add/rm <файл>...», чтобы добавить или удалить файл из индекса)
  (используйте «git restore <файл>...», чтобы отменить изменения в рабочем каталоге)
	изменено:      model1.sql
	удалено:       model2.sql

Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
	model3.sql

индекс пуст (используйте «git add» и/или «git commit -a»)
Отброшено refs/stash@{0} (1446235384fa6de4881300c9febe549fedb12510)

Plugin git vscode

Для демонстрации в ветке IDVP-555 один файл был изменен (model1.sql), один файл был удален (model2.sql) и один файл был создан (model3.sql).

Сохраняем локальные изменения без коммита. image

Вводим сообщение о скрытии, поясняющее, какие изменения в него входят и жмем enter. Не закоммиченные изменения спрятаны. image

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

После того, как будут внесены нужные правки в ветку main и сделаны нужные коммиты, можно переключиться обратно в ветку IDVP-555. image

Восстанавливаем изменения image

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

Шаг 4. В рабочую ветку накатить коммиты из основной, если в рабочей ветке все закоммичено

Пока мы в своей ветке IDVP-555 делали свою задачу, наши коллеги добавили коммитов в базовую ветку main (обычно надо брать коммиты из developer). Теперь нам надо перенести эти коммиты в свою ветку. Возможны 2 варианты - изменения коллег и наши изменеия - будут или не будут пересекаться.

Команды git командной строки

Убеждаемся, что мы в ветке IDVP-555

git branch

* IDVP-555
  main

Выполняем команду переноса изменений одной ветки в другую. Если в файлах нет пересекающихся изменений, то мы увидим сообщение об успешном переносе изменений, как в привемере:

git merge main

Обновление 5c407c5..80ab750
Fast-forward
 README.md | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 153 insertions(+)
 create mode 100644 README.md

Теперь сделаем в одном файле пересекающиеся изменения в 2 ветках, а затем перенесем изменения из одной ветки в другую.

Для этого сначала переходим в ветку main:

git checkout main

Меняем содержимое файла model4.sql:

select 4;

на:

select 4;
# some comment 1

то есть мы добавили в файл model4.sql комментарий в последней строке.

сохраняем коммит:

git add model4.sql
git commit -m 'added comment 1 to model4'

Переключаемся на ветку IDVP-555

git checkout IDVP-555

Меняем содержимое файла model4.sql с

select 4;

на

select 4;
# some comment 2

сохраняем коммит:

git add model4.sql
git commit -m 'added comment 2 to model4'

переносим изменения из ветки main в ветку IDVP-555:

git merge main

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

Автослияние model4.sql
КОНФЛИКТ (содержимое): Конфликт слияния в model4.sql
Сбой автоматического слияния; исправьте конфликты, затем зафиксируйте результат.

Открываем на редактирование файл model4.sql, чтобы разрешить конфликт:

nano model4.sql

Меняем содержимое с:

<<<<<<< HEAD
# some comment 2
=======
# some comment 1
>>>>>>> main

на следующее и сохраняем:

select 4;
# some comment 1
# some comment 2

Формируем коммит с файлом с разрешенным конфликтом:

git add model4.sql
git commit

Перенос изменений из ветки main в ветку IDVP-555 успешно завершен.

Plugin git vscode

iScreen Shoter - Code - 240902193955

Шаг 5. Отправить свою рабочую ветку во внешний репозиторий и создать merge request:

Команды git командной строки

Проверяем, что находимся в ветке IDVP-555

git branch

* IDVP-555
  main

Если находимся не в IDVP-555, то переключаемся на нее командой:

git checkout IDVP-555

Публикуем рабочую ветку IDVP-555 в gitlab

git push --set-upstream origin IDVP-555

Перечисление объектов: 46, готово.
Подсчет объектов: 100% (46/46), готово.
При сжатии изменений используется до 8 потоков
Сжатие объектов: 100% (38/38), готово.
Запись объектов: 100% (43/43), 5.25 КиБ | 1.05 МиБ/с, готово.
Всего 43 (изменений 15), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: Resolving deltas: 100% (15/15), completed with 1 local object.
remote: 
remote: Create a pull request for 'IDVP-555' on GitHub by visiting:
remote:      https://github.com/amelinvladimir/git_course/pull/new/IDVP-555
remote: 
To github.com:amelinvladimir/git_course.git
 * [new branch]      IDVP-555 -> IDVP-555
branch 'IDVP-555' set up to track 'origin/IDVP-555'.

Переходим по указанной в сообщении ссылке (https://github.com/amelinvladimir/git_course/pull/new/IDVP-555), чтобы создать merge request.

Plugin git vscode

iScreen Shoter - Code - 240902192701

iScreen Shoter - Code - 240902192748

Шаг 6. Создать merge request

Открыть страницу проекта в git: iScreen Shoter - Google Chrome - 240902192927

Там вы увидите предложение создать merge request: iScreen Shoter - Google Chrome - 240902193053

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published