diff options
| author | Andrew <saintruler@gmail.com> | 2021-06-20 14:57:30 +0400 |
|---|---|---|
| committer | Andrew <saintruler@gmail.com> | 2021-06-20 14:57:30 +0400 |
| commit | 9c694db396365a9fa512a65450a1486922fdd3e3 (patch) | |
| tree | 82c6ab5c7dd87d0043ca6a4f19d1f100f2b6f719 /blog/git.md | |
Initial commit
Diffstat (limited to 'blog/git.md')
| -rw-r--r-- | blog/git.md | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/blog/git.md b/blog/git.md new file mode 100644 index 0000000..20f1b73 --- /dev/null +++ b/blog/git.md @@ -0,0 +1,113 @@ +# Гайд по работе с Git + +## Основные команды +- - - + +### Клонирование репозитория + +`git clone git@github.com:<твой-никнейм>/<репозиторий>.git` + +После выполнения clone будет автоматически создан remote с названием origin с +указанным url Для обновления форка необходимо добавить remote с апстримом. + +### Добавление главного репозитория для обновления master ветки + +`git remote add upstream https://github.com/<имя>/<репозиторий>.git` + +### Коммит последних изменений + +``` +git status # Посмотреть все текущие staged и unstaged изменения +git add . # Сделать все unstaged изменения staged +git commit # Сделать коммит с развёрнутым сообщением. При вызове из терминала + # откроется какой-нибудь текстовый редактор, в котором можно + # написать полное сообщение. При выходе из редактора коммит + # делается с последним сохранённым сообщением. +git commit -m "<сообщение>" # Добавить коммит с кратким сообщением +``` + +### Сохранение текущих изменений + +Это необходимо для избежания лишних конфликтов во время merge/pull + +``` +git stash # Сохранить изменения в stash +git stash list # Вывести все сохранённые изменения +git stash pop # Достать последние изменения +git stash pop 0 # Применить изменения под номером 0 +git stash drop # Удалить изменения из стека +``` + +### Обновление ветки из апстрима + +``` +git pull upstream master +git pull upstream develop +``` + +### Создание ветки под новое изменение + +`git checkout -b <тип фичи>/<краткое описание изменения>` + +### Переключение на существующую ветку + +`git checkout <название ветки>` + +### Объединение веток + +Внесение изменений из `<название ветки>` в текущую: +`git merge <название ветки>` + +Если при создании пулл-реквеста появились конфликты, то следует +сначала обновить master из апстрима, после чего внести полученные изменения +в текущую ветку. + +``` +git stash # Сохранить текущие незакоммиченные изменения на этой ветке +git checkout master +git pull upstream master +git checkout <branch> +git merge master +git stash pop # Заново применить изменения, сохранённые с помощью + # команды git stash +``` + +### Загрузка своих изменений на сервер + +``` +git push -u origin <название ветки> # При первой загрузке этой ветки +git push # Во все последующие разы +``` + +### Что нужно выяснить самому + +- Как выглядят конфликты и как их решать. +- Как создать пулл реквест. + +## Процесс работы с репозиторием +- - - + +Для разработки своей фичи следует сделать форк главного репозитория и +после этого работать только со своей версией. После этого клонируешь свой +форк и работаешь с ним. Также в склонированный репозиторий нужно добавить +дополнительный remote под названием upstream (на самом деле название может +быть любым), чтобы синхронизироваться с... апстримом. + +При начале работы над новой фичей создаётся новая ветка (именованная по +указанным в основном документе правилам). **Новая ветка создаётся на основе +develop, а не master**. В неё делаются какие-то коммиты. Когда работа над фичей +завершена, необходимо перейти на develop ветку **форка** и синхронизировать её +с апстримом: `git pull upstream develop`. После этого нужно выполнить слияние +ветки с фичей и master и решить все возникшие конфликты. + +Только после этого делается Pull Request в главный репозиторий. Ветка источник +--- ветка с фичей, ветка приёмник --- develop ветка в главном репозитории. +В случае, если снова возникли конфликты --- переходим к предыдущему параграфу. + +Если же всё хорошо и есть возможность автоматического слияния, то нужно указать +Reviewers чтобы кто-то мог разобрать по частям тобою написанное. + +Когда пулл реквест принят и слит в develop, переходишь к своему локальному +репозиторию и снова синхронизируешься с апстримом. После этого можно приступать +к разработке новой фичи. + |