maksimerohin
5/20/2019 - 4:54 AM

Git

Команды для работы с Git.

Установка

Официальная сборка доступна для скачивания на официальном сайте Git.
http://git-scm.com/download/win

История коммитов

git log Выводит историю коммитов

Опции

-p Показывает патч для каждого коммита.

--stat Показывает статистику измененных файлов для каждого коммита.

--shortstat Отображает только строку с количеством изменений/вставок/удалений для команды --stat.

--name-only Показывает список измененных файлов после информации о коммите.

--name-status Показывает список файлов, которые добавлены/изменены/удалены.

--abbrev-commit Показывает только несколько символов SHA-1 чек-суммы вместо всех 40.

--relative-date Отображает дату в относительном формате (например, "2 weeks ago") вместо стандартного формата даты.

--graph Отображает ASCII граф с ветвлениями и историей слияний.

--pretty Показывает коммиты в альтернативном формате. Возможные варианты опций: oneline, short, full, fuller и format (с помощью последней можно указать свой формат).

--oneline Сокращение для одновременного использования опций --pretty=oneline --abbrev-commit.

Команды

git log -p -2 Выводит подробную информацию (-p патч) об изменениях в последних 2-х коммитах

git log --stat, git log --stat -2 Выводит историю коммитов с разницей

git log --pretty=oneline Претифицирует вывод коммитов. Есть опции short, full и fuller

git log --pretty=format:"%h - %an, %ar : %s"

git diff FILE Выводит изменения

Изменение последнего коммита

Если вы что-либо недоглядели в последнем коммите, то отредактировать его не составит никакого труда. Все, что нужно это добавить изменения обычным образом:

git add .

Затем закоммитить изменения с параметром --amend (amend /əˈmɛnd/ — вносить поправки, исправлять, улучшать):

git commit --amend

Изменение названия последнего коммита

То же самое, с той лишь разницей что нет необходимости добавлять файлы в коммит. Просто укажите новое название:

git commit --amend -m "Новое название"

Основы Git - Отмена изменений

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

Для удаления файла из git-репозитория без его физического удаления: git rm --cached mylogfile.log

Для удаления папки (рекурсивно) можно сделать так: git rm -r --cached folderName

А для того, чтобы ситуация не повторялась, добавьте файл или папку в .gitignore.

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

git branch выводит список веток.
git branch -v выводит последний коммит в каждой ветке.
git branch --merged выводит ветки, слитые с текущей.
git branch --no-merged выводит ветки, не слитые с текущей.
git branch -d [branch] удаляет ветку.

git checkout -b <название ветки> origin/<название ветки> подключает удалённую ветку (ветку из удалённого репозитория)

Слияние веток

git co master
git merge --no-ff develop

Параметр --no-ff при слиянии оставляет информацию о коммитах, сделанных в develop

Работа с репозиториями

git remote -v Выводит путь к удалённому репозиторию
git remote set-url origin git@github.com:vicman-wi/wi-backend.git Назначает (изменяет) путь к удалённому репозиторию
git remote add origin https://maksimerohin@bitbucket.org/ipku/wp-content.git

I am trying to do a git pull origin master from my server but keep getting the error: Please move or remove them before you can merge.

git clean -d -f

Метки

git tag
git tag 12345
git tag -a 1.0.5
git tag -a 1.0.5 -m "Tag description"
git push origin [tag-annotation]
git push --tags

Совместная работа

Развернуть сайт.
Очистить (удалить) папку темы (репозитория).
Клонировать репозиторий.
git clone https://merokhinyandexru@bitbucket.org/me-studio/we-gabrielle-blue.git

Создать ветку для разработок. Работать в этой ветке.

Обновить жёстко из удалённого репозитория

https://stackoverflow.com/questions/1125968/how-do-i-force-git-pull-to-overwrite-local-files

⚠ Important: If you have any local changes, they will be lost (if they're tracked). Also, with or without --hard option, any local commits that haven't been pushed will be lost.[*]
If you have any files that are not tracked by Git (e.g. uploaded user content), these files will not be affected.

First, run a fetch to update all origin/ refs to latest:
git fetch --all

Backup your current branch:
git branch backup-master

Then, you have two options:
git reset --hard origin/master

OR If you are on some other branch:
git reset --hard origin/<branch_name>