Работа с git

Получение данных

Инициализация нового репозитория. При клонировании удаленного репозитория (git clone) выполнение данной команды необязательно

    git init

Клонирование удаленного репозитория на локальный компьютер

    git clone

Синтаксис команды: git clone имя_репозитория папка_куда_нужно_склонировать_репозиторий ;
При клонировании внутри папки создается папка с названием клонируемого репозитория.

Получение с сервера списка изменений

    git fetch

Получение с сервера текущей версии активной ветки

    git pull

Проверка, есть ли что-либо для коммита

    git status

Передача данных

Добавление измененного содержимого в индекс

    git add

git add . - добавление всех файлов, git add имя_файла - добавление конкретного файла

Аналог команды git add.

    git stage

Команда предшествует git commit. Вначале все изменения должны получить статус staged, и только затем committed.

Запись сделанных изменений в репозиторий

    git commit

Загрузка на сервер изменений, сделанных в ветке

    git push

Пример: git push origin foo - отправить на удаленный репозиторий локальную ветку “foo”

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

Чтобы привести репозиторий в первоначальное состояние

    git reset

Убрать все unstaged-изменения в проекте

    git clean

При создании новой ветки происходит создание копии уже существующего проекта.

Слияние и переключение между ветками

git merge имя ветки - соединение ветки “имя ветки” в текущую ветку;
git checkout имя ветки - переключение на ветку “имя ветки”;
Merge производится в ту ветку, которая является активной.
И нужно выбрать ту ветку, которую нужно вливать.

Команды для получения конкретного коммита вместо “вливания” всех изменений
Команда сherry-pick подтягивает только выбранный Commit вместо пачки коммитов, которые придется подтягивать при слиянии.
git cherry-pick <hash коммита> - из “наследуемой” ветки вливается коммит в текущую ветку. И сразу же делает коммит.
git cherry-pick -n <hash коммита> - из “наследуемой” ветки вливается коммит в текущую ветку. Коммит при этом не происходит.

Получение метаинформации

git log - показывает, какие изменения и коммиты происходили;
q- для выхода из лога;
git branch -a - команда просмотра, в какой ветке находится пользователь в данный момент.

Работа с . gitignore

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

Например, если вы уже выполнили git commit и файл .gitignore создали после этого, то файлы игнорироваться не будут, так как они уже отслеживаются git. Чтобы исключить файлы, которые уже отслеживаются git , но добалены в .gitignore , нужно выполнить git rm –cached <file>. В команду git rm можно передавать файлы, каталоги или glob-шаблоны. Например, git rm /* - удалить все файлы из каталога**/**. Для рукурсивного удаления нужно изпользовать опцию -r. Наример, git rm -r catalog/ - удалить все файлы из каталога /.

Сокрытие изменений

git stash apply - применить изменения к текущей версии
git stash list - вывести список изменений
git stash show - вывести последние изменния
git stash drop - удалить последние изменения в списке
git stash pop - [apply] + [drop]
git stash clear - очистить список изменений