На главную

Шпаргалка по командам git
Что делать, когда под руками нет SourceTree

Основной сценарий

Шаг 1

У нас есть задача (issue), которую мы планируем сделать. В центральном репозитории создаём ветку для решения задачи. Например, для задачи с номером 234 создаём ветку features/issue-234.

Шаг 2

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

Сначала скачиваем из удалённого репозитория изменения, включая новые ветки

git fetch

Чтобы убедиться, что удалённая ветка доступна локально, выполняем команду

git branch -a

Создаём локальную ветку, которая указывает на удалённую ветку

git checkout -b features/issue-234 origin/features/issue-234

или, короче

git checkout -t origin/features/issue-234

Шаг 3

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

Сначала смотрим, что успели сделать.

git status

Виды файлов:

Помечаем для фиксации файлы file₁..fileₙ.

git add <file₁> ... <fileₙ>

Помечаем для фиксации все файлы в текущем каталоге и его подкаталогах.

git add .

Фиксируем все файлы, помеченные для фиксации. Git попросит ввести комментарий.

git commit

Отправляем изменения в центральный репозиторий.

git push

Шаг 4

Решив задачу мы должны слить все изменения в основную ветку — master. Это делается через pull request в центральном репозитории. Ставим галочку удалить исходную ветку после слияния, чтобы не пришлось удалять эти ветку вручную.

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

git checkout master

«Подтягиваем» в неё изменения из центрального репозитория.

git pull

Смотрим, какие ветки живы локально, но при этом удалены на сервере.

git remote prune origin

Удаляем ветки, которые показала предыдущая команда.

git branch -d features/issue-234

Вливаем изменения из центрального репозитория

Если в ветке master появились изменения, мы можем влить в нашу ветку, чтобы в будущем упростить pull request. Переключаемся на ветку master, загружаем обновления, переключаемя на рабочую ветку, сливаемся с master и выгружаем результат в центральный репозиторий. Если конфликтов не было, pull request пройдёт без проблем.

git checkout master
git pull
git checkout features/issue-234
git merge master
git push