git — справочник команд

git clone https://github.com/user/lav.git
cd d:\_GIT\lav
git status
git add -A
git commit -m "Make change"
git push
git pull

Обучалка по GIT https://learngitbranching.js.org/


Инициализировать в текущем каталоге

git init .

Клонировать проект в текущую папку (можно указать любую)

git clone https://login@bitbucket.org/login/project.git .

Добавление файлов

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

git add -u

можно добавить все измененные и удаленные файлы в какой-то определенной папке

git add -u /path/

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

git add -u .

Если нужно добавить не только измененные и удаленные, а еще и новые файлы, то вместо -u используем -A

git add -A

Если нужно добавить только новые и измененные файлы, но не добавлять удаленные

git add --ignore-removal

Временно спрятать измененные файлы

git stash

Посмотреть спрятанные файлы

git stash list

Восстановить последнюю заначку

git stash apply

Если нужно не только последнюю, то из результата вывода git stash list берем нужную

git stash apply stash@{1}

Удалить спрятанное

# убирает последнюю заначку
git stash drop
# убирает определенную заначку
git stash drop stash@{1}

Применение коммитов

git commit -m 'Комментарий к коммиту'

Отмена последнего коммита
Если поторопились с коммитом или напутали комментарий, то последний коммит можно затереть после правок новым коммитом

git commit --amend -m 'Новый комментарий к коммиту'

Если нужно отменить последний коммит с сохранением изменений

git reset --soft HEAD^

Если нужно совсем отменить последний коммит с удалением изменений

git reset --hard HEAD^

Если нужно удалить все лишние файлы (которые были удалены в коммите, но остались на диске)

git clean -f -d

Если коммит уже опубликован, то берем его sha1 код

git revert commit-sha1

Просмотр списка коммитов

git log

Список с информацией в виде патчей

git log -p

Список с информацией об измененных файлах

git log --stat

Список с информацией о созданных, переименованных, удаленных файлах

git log --summary

История изменений конкретного файла

git log filename

или каталога

git log dir/

Изменения за последние сколько-то недель, дней, часов

git log --since="1 week 3 day 2 hours" filename
git log --since="1 day 6 hours" filename
git log --since="2 hours" filename

Склеить несколько последних коммитов

# объединяем последние 5 коммитов
git rebase -i HEAD~5
# в открывшемся редакторе меняем pick на squash у всех кроме первого и сохраняем файл
# далее в еще одном редакторе вводим текст нового коммита и сохраняем

# заливаем изменения на сервер

git push --force

Работа с ветками

Создать новую ветку с именем branch_name

$ git branch branch_name

Переключиться на ветку branch_name

$ git checkout branch_name

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

$ git checkout -b branch_name

Слить ветку branch_name в ветку master

$ git checkout master
$ git merge branch_name

Удалить ветку branch_name

$ git branch -d branch_name

Вывод списка веток (* помечена текущая активная ветка)

$ git branch
develop
* master
testing

Вывести последние коммиты для каждой из веток

$ git branch -v

Вывод веток, которые уже слиты с текущей

$ git branch --merged

Вывод веток, которые еще не слиты с текущей

$ git branch --no-merged

Синхронизация данных с удаленного сервера

$ git fetch origin

вытянуть все ветки из репозитория

$ git fetch --all

отправка ветки branch_name на удаленный сервер

$ git push origin branch_name

получение ветки branch_name с удаленного сервера для работы (название локальной и удаленной ветки можно ставить разным)

$ git checkout -b branch_name origin/branch_name

или более простой вариант если названия одинаковые

$ git checkout --track origin/branch_name

удаление ветки branch_name на удаленном сервере (заливаем пустоту в ветку удаленного сервера)

$ git push origin :branch_name

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

git push -u origin dev

Добавить удаленный репозиторий

git remote add origin https://nickname@bitbucket.org/nickname/project.git

развернуть файлы из ветки (и удалить всё лишнее), если что-то было несохранненное — всё потеряется

git reset --hard origin/develop

получить информацию об удаленном репозитории

git remote show origin

заменить репозиторий origin на другой

git remote set-url origin new.git.url/here

Заменить редактор Git на Notepad++ в Windows

На 32-битной ОС:

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

на 64-битной ОС:

git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Полезные ссылки

Простое руководство по GIT на русском языке

Обучалка Gitу на английском языке (интерактивная)

Интерактивный тур по основам Git на русском

Git basics

Графические клиенты GIT

Лучший бесплатный графический клиент https://www.sourcetreeapp.com/