Git

Первоначальная настройка 

Установка:

1. # apt-get install git
2.ssh-keygen -o 
3.cat ~/.ssh/id_rsa.pub
Настройка информации о пользователе для всех локальных репозиториев 
 $ git config --global user.name "[имя]" 
Устанавливает имя, которое будет отображаться в поле автора у выполняемых вами коммитов 

$ git config --global user.email "[адрес электронной почты]" 
Устанавливает адрес электронной почты, который будет отображаться в информации о выполняемых вами коммитах 

Создание репозитория 

Создание нового репозитория или получение его по существующему URL-адресу 
$ git init [название проекта] 

Скачивает репозиторий вместе со всей его историей изменений 
$ git clone [url-адрес] 

Операции с файлами 

Удаляет конкретный файл из рабочей директории и индексирует его удаление 
$ git rm [файл] 

Убирает конкретный файл из контроля версий, но физически оставляет его на своём месте 
$ git rm --cached [файл] 

Перемещает и переименовывает указанный файл, сразу индексируя его для последующего коммита
$ git mv [оригинальный файл] [новое имя] 

Игнорирование некоторых файлов 

Исключение временных и вторичных файлов и директорий *.log build/ temp-* 
Git будет игнорировать файлы и директории, перечисленные в файле .gitignore с помощью wildcard синтаксиса 

$ git ls-files --others --ignored --exclude-standard 
Список всех игнорируемых файлов в текущем проекте 

Сохранение фрагментов 

Сохранение и восстановление незавершённых изменений 
$ git stash 
Временно сохраняет все незафиксированные изменения отслеживаемых файлов 

$ git stash pop 
Восстанавливает состояние ранее сохранённых версий файлов 

$ git stash list 
Выводит список всех временных сохранений 

$ git stash drop 
Сбрасывает последние временно сохранённыe изменения 

Внесение изменений 

$ git status 
Перечисляет все новые или изменённые файлы, которые нуждаются в фиксации 

$ git diff 
Показывает различия по внесённым изменениям в ещё не проиндексированных файлах 

$ git add [файл] 
Индексирует указанный файл для последующего коммита 

$ git diff --staged 
Показывает различия между проиндексированной и последней зафиксированной версиями файлов 

$ git reset [файл] 
Отменяет индексацию указанного файла, при этом сохраняет его содержимое 

$ git commit -m "[сообщение с описанием]" 
Фиксирует проиндексированные изменения и сохраняет их в историю версий 

Коллективная работа 

$ git branch 
Список именованных веток коммитов с указанием выбранной ветки 

$ git branch [имя ветки] 
Создаёт новую ветку 

$ git checkout [имя ветки] 
Переключается на выбранную ветку и обновляет рабочую директорию до её состояния 

$ git merge [имя ветки] 
Вносит изменения указанной ветки в текущую ветку 

$ git branch -d [имя ветки] 
Удаляет выбранную ветку 

Просмотр истории 

$ git log 
$ git log --oneline
История коммитов для текущей ветки 

$ git log --follow [файл] 
История изменений конкретного файла, включая его переименование 

$ git diff [первая ветка]...[вторая ветка] 
Показывает разницу между содержанием коммитов двух веток 

$ git show [коммит] 
Выводит информацию и показывает изменения в выбранном коммите 

Откат коммитов 

$ git reset [коммит] 
Отменяет все коммиты после заданного, оставляя все изменения в рабочей директории 

$ git reset --hard [коммит] 
Сбрасывает всю историю вместе с состоянием рабочей директории до указанного коммита. 

Синхронизация с удалённым репозиторием 

$ git fetch [удалённый репозиторий] 
Скачивает всю историю из удалённого репозитория 

$ git merge [удалённый репозиторий]/[ветка] 
Вносит изменения из ветки удалённого репозитория в текущую ветку локального репозитория 

$ git push [удалённый репозиторий] [ветка] 
Загружает все изменения локальной ветки в удалённый репозиторий 

$ git pull 
Загружает историю из удалённого репозитория и объединяет её с локальной. pull = fetch + merge

Шпаргалка по git-flow

Установка

apt-get install git-flow

Инициализация 

git flow init 

Начало новой фичи 

Разработка новых фич начинается из ветки "develop". 

git flow feature start MYFEATURE 

Завершение фичи 

Окончание разработки фичи: 

Слияние ветки MYFEATURE в "develop" 

Удаление ветки фичи 

Переключение обратно на ветку "develop" 

git flow feature finish MYFEATURE 

Публикация фичи 

git flow feature publish MYFEATURE 

Получение опубликованной фичи 

Получение фичи, опубликованной другим пользователем. 

git flow feature pull origin MYFEATURE 

Вы можете отслеживать фичу в репозитории origin с помощью команды 

git flow feature track MYFEATURE 

Создание релиза 

Начало релиза 

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

git flow release 

Она создаёт ветку релиза, ответляя от ветки "develop". 

git flow release start RELEASE [BASE] 

При желании вы можете указать [BASE]-коммит в виде его хеша sha-1, чтобы начать релиз с него. Этот коммит должен принадлежать ветке "develop". Желательно сразу публиковать ветку релиза после создания, чтобы позволить другим разработчиками выполнять коммиты в ветку релиза. Это делается так же, как и при публикации фичи, с помощью команды: 

git flow release publish RELEASE 

Вы также можете отслеживать удалённый релиз с помощью команды 

git flow release track RELEASE 

Завершение релиза 

Завершение релиза — один из самых больших шагов в git-ветвлени. При этом происходит несколько действий: 

Ветка релиза сливается в ветку "master" 

Релиз помечается тегом равным его имени 

Ветка релиза сливается обратно в ветку "develop" 

Ветка релиза удаляется 

git flow release finish RELEASE 

Не забудьте отправить изменения в тегах с помощью команды git push --tags 

Исправления 

git flow hotfix start 

Как и в случае с другими командами git flow, работа над исправлением начинается так: 

git flow hotfix start VERSION [BASENAME] 

Аргумент VERSION определяет имя нового, исправленного релиза. При желании можно указать BASENAME-коммит, от которого произойдёт ответвление. Завершение исправления Когда исправление готово, оно сливается обратно в ветки "develop" и "master". Кроме того, коммит в ветке "master" помечается тегом с версией исправления. 

git flow hotfix finish VERSION

 


 

 

 

 

 

 

 

Признаки "плохого кода"

Кратко рассмотрим 12 признаков, когда код можно улучшить: 1. Duplicated Code  — иногда повторяющийся код не всегда несет в себе пользу. Выде...