title-hero
Прохоров Игорь
Личный сайт разработчика

Блог

Статьи, которые я написал
0%
  • Шпаргалка по командам Git

    Создать новый репозиторий

    git init
    git init folder-name       

    Клонирование репозитория

    git clone git@github.com:nicothin/web-design.git
    git clone git@github.com:nicothin/web-design.git foldername
    git clone git@github.com:nicothin/web-design.git              

    Добавление файлов к отслеживанию, индексация отслеживаемых

    git add text.txt
    git add
    git add -i
    git add -p       

    Убирание файла, папки из отслеживания

    git rm --cached readme.txt
    git rm --cached -r folder       

    Отмена индексации

    git reset HEAD
    git reset HEAD text.txt       

    Просмотр изменений

    git diff
    git diff --staged       

    Отмена изменений

    git checkout -- text.txt
    git checkout --
    git checkout text.txt       

    Коммиты

    git commit -m
    git commit -a -m
    git commit
    git commit --amend
    git commit --amend -m              

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

    git revert HEAD --no-edit
    git revert b9533bb --no-edit
    git reset --hard 75e2d51       

    Временно переключиться на другой коммит

    git checkout b9533bb
    git checkout master       

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

    Потребуется создание новой ветки, начинающейся с указанного коммита.

    git checkout -b new-branch 5589877       

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

    git rm text.txt
    git rm -f text.txt
    git rm -r log/
    git rm ind
    git rm --cached readme.txt       

    Перемещение/переименование файлов (Git не отслеживает перемещения/переименование, но пытается его угадать)

    git mv text.txt test_new.txt
    git mv readme_new.md folder/       

    История изменений

    git log -p index.html
    git log -p -5 index.html
    git log -2
    git log -2 --stat
    git log -p -22
    git log --pretty=format:       -4
    git log --graph -10
    git log --since=2.weeks
    git log --pretty=format:       --graph --date=short
    git log master..branch_99
    git log branch_99..master
    git show 60d6582
    git show HEAD^       

    Ветки

    git branch
    git branch -v
    git branch new_branch
    git checkout new_branch
    git checkout -b new_branch
    git merge hotfix
    git branch -d hotfix
    git branch --merged
    git branch --no-merged
    git branch -a
    git branch -m old_branch_name new_branch_name
    git branch -m new_branch_name
    git push origin :old_branch_name new_branch_name
    git branch --unset-upstream       

    Удалённые репозитории

    git remote -v
    git remote remove origin
    git remote add origin git@github.com:nicothin/test.git
    git remote rm origin
    git remote show origin
    git fetch origin
    git fetch origin master
    git checkout origin/github_branch
    git checkout --track origin/github_branch
    git push origin master
    git pull origin
    git pull origin master       

    Разное

    git clean -f -d       
  • Шпаргалка примеры Git

    Собираем коллекцию простых и сложных примеров работы

    Начало работы

    Создание нового репозитория, первый коммит, привязка удалённого репозитория с gthub.com, отправка изменений в удалённый репозиторий.

    git init
    touch readme.md
    git add readme.md
    git commit -m
    git remote add origin git@github.com:nicothin/test.git
    git push origin master       

    Обычный рабочий процесс

    Создание нового репозитория на github.com, клонирование к себе, работа, периодическая «синхронизация с github.com».

    git clone АДРЕС_РЕПОЗИТОРИЯ ПАПКА_ПРОЕКТА
           ПАПКА_ПРОЕКТА
    git add
    git commit -m
    git push origin master       

    Не обязательно после каждого коммита отправлять изменения в удаленный репозиторий, можно сделать это один раз в конце работы.

    Внесение изменений в коммит

    subl inc/header.html
    git add inc/header.html
    git commit -m
    git add inc/header.html
    git commit --amend -m              

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

    Есть master (публичная версия сайта), хотим масштабно что-то поменять (переверстать «шапку»), но по ходу работ возникает необходимость подправить критичный баг (неправильно указан контакт в «подвале»).

    git checkout -b new_page_header
    subl inc/header.html
    git commit -a -m
    git checkout master
    git checkout -b footer_hotfix
    subl inc/footer.html
    git commit -a -m
    git checkout master
    git merge footer_hotfix
    git branch -d footer_hotfix
    git checkout new_page_header
    subl inc/header.html
    git commit -a -m
    git checkout master
    git merge new_page_header
    git branch -d new_page_header       

    Работа с ветками, конфликт слияния

    Есть master (публичная версия сайта), в двух параллельных ветках (branch_1 и branch_2) было отредактировано одно и то же место одного и того же файла, первую ветку (branch_1) влили в master, попытка влить вторую вызывает конфликт.

    git checkout master
    git checkout -b branch_1
    subl
    git commit -a -m
    git checkout master
    git checkout -b branch_2
    subl
    git commit -a -m
    git checkout master
    git merge branch_1
    git merge branch_2
    subl
    git commit -a -m              

    Синхронизация репозитория-форка с мастер-репозиторием

    Есть некий репозиторий на github.com, он него нами был сделан форк, добавлены какие-то изменения. Оригинальный (мастер-) репозиторий был как-то обновлён. Задача: стянуть с мастер-репозитория изменения (которые там внесены уже после того, как мы его форкнули).

    git remote add upstream git@github.com:address.git
    git fetch upstream
    git checkout master
    git merge upstream/master       

    Ошибка в работе: закоммитили в мастер, но поняли, что нужно было коммитить в новую ветку (ВАЖНО: это сработает только если коммит еще не отправлен в удалённый репозиторий)

    git checkout -b new-branch
    git checkout master
    git reset HEAD~ --hard
    git checkout new-branch       

    Нужно вернуть содержимое файла к состоянию, бывшему в каком-либо коммите (известна SHA коммита)

    git checkout f26ed88 -- index.html
    git status
    git diff --staged
    git commit -am              

    При любом действии с github (или другим удалённым сервисом) запрашивается логин/пароль

    Речь именно о запросе пароля, а не ключевой фразы.

    git remote -v
    git remote add origin git@github.com:address.git
    git remote rm origin
    git remote add origin git@github.com:address.git       
  • Шпаргалка GULP.

    npm [command] -h
    npm i [package]
    npm i [package] -D
    npm home [package]
    npm repo [package]
    npm r [package]
    npm list --depth=0
    npm list -g --depth=0
    npm list [package]
    npm view [package] version
    npm outdated                     

    NPM-скрипты

    В package.json, в секцию "scripts" можно прописать команды, которые будут выполняться с помощью команды npm run, но по умолчанию есть некоторые сокращения:

    • npm test или npm t — сокращения для npm run test
    • npm start — сокращение для npm run start

    Команда nmp run [что-то] добавляет в $PATH директорию node_modules/.bin, так что можно использовать не глобально установленные зависимости проекта без упоминания этой директории.

    Разное

    npm        init.author.name
    npm        init.author.email
    npm        init.author.url       

    Поместите в корень репозитория файл .npmrc из этого репозитория для уменьшения длинны сообщений об ошибках в консоли.

    Отключите прогресс-бар для увеличения скорости установки пакетов: npm set progress=false

    Используйте сокращенную запись для установки пакетов с одинаковым префиксом:
    npm i gulp-{concat,minify,uglify} -D

    Используете bower? Хорошо. Но для тех, кто его не использует, будет невозможно собрать проект.

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