Введение
Эта статья является продолжением предыдущей статьи Git, краткая теория.
Сегодня мы рассмотрим работу с Git на практических примерах. (Используется Git версии 1.7.8.msysgit.0)
В Git есть хорошая практика, которая рекомендует перед началом работы с репозиторием представиться ему, указав своё имя и электронный ящик для обратной связи. Поэтому работу с Git мы начнём с описания команд работы с конфигурацией Git
Сделаю важное замечание, я не буду углубляться во всё многообразие способов вызова той или иной команды Git, наоборот — я приведу конкретные команды для получения нужного результата.
Настройка Git-репозитория (git config)
Как говорилось в прошлой статье, настройки Git придерживаются стандартной архитектуры настроек Linux. Настройки могут быть: локальные (—local), пользовательские (—global), системные (—system).
Настройки распределены по секциям, подсекциям и имени параметра:
section.subsection.name = value
В файле конфигурации эти параметры располагаются следующим образом:
[section "subsection"]
name = valueВсе составляющие имени параметра разделяются точкой.
Подсекция может состоять из любого кол-ва подсекций:
section.subsection1.subsection2.subsectionN.name = value
Но в файле настроек всё выглядит точно так, как и раньше:
[section "subsection1.subsection2.subsectionN"]
name = value
Справка
Чтение списка настроек
git config -l
git config —local -l
git config —global -l
git config —system -l
Добавление настроек
git config [—system | —glogal | —local] —add имяСекции.имяПеременной значениеПеременной
git config user.name YourName
git config user.email YourEmail@email.x
git config —add user.name YourName
git config —add user.email YourEmail@email.x
git config —global —add user.name YourName
git config —global —add user.email YourEmail@email.x
git config —global —add user.name «YourName YourSurname»
Чтение отдельной настройки
git config —get user.name
Поиск отдельной настройки
git config —get-regexp regexpName [regexpValue]
git config —get-regexp user
git config —get-regexp ^user
git config —global —get-regexp ^user
git config —global —get-regexp remote
Создание Git-репозитория (git init)
Команда git init создаёт новый репозиторий
git init
git init —bare
git init repo
git init —bare repo
Состояние репозитория (git status)
Команда git status позволяет узнать текущее состояние репозитория.
Подготовка файлов к фиксации (git add)
Команда git add добавляет файл или группу файлов в index (staging area). (В дальнейшем добавленные файлы могут будь зафиксированы в репозитории командой git commit
git add .
git add path/to/file1
Фиксация изменений (git commit)
Команда git commit переносит изменения из index (staging area) в local repo.
После оп
ерации фиксации вам необходимо заново заполнять область index (staging area)
git commit -m «Комментарий к фиксации»
git commit -a -m «Комментарий к фиксации»
Возврат к любой фиксации (git checkout)
Команда git checkout позволяет загрузить любое состояние репозитория в working tree.
При возврате к фиксации, work tree переходит в состояние на тот момент фиксации: исчезают файлы, которых не было в тот момент, появляются файлы, которые были на тот момент. (Заметка: checkout можно выполнить, только тогда, когда у вас нет никаких изменений в текущем состоянии working tree. В ином случае вам следует их зафиксировать или отказаться от них).
git checkout nameBranchOrCommit
git checkout b4d4
git checkout master
git checkout master~1
git checkout head~1
git checkout b4d47~2
git checkout -b branchName nameBranchOrCommit
Работа с ветвями (git branch)
Команда git checkout обеспечивает работу с ветвями. Просмотр, создание и удаление ветвей разработки
git branch
git branch -r
git branch branchName
git branch -d branchName
git branch -D branchName
Обзор изменений (git diff)
Команда git diff позволяет увидеть изменения между разными состояниями фиксаций, или между текущими изменениями и последней фиксацией.
git diff
git diff —cached
git diff master~2..master
git diff master..master~2
Обзор лога фиксаций (git log)
Команда git log позволяет увидеть историю фиксаций от начала до текущего состояния HEAD.
git log
git log nameBranchOrCommit
git log anyBranch~1
git log master~2..master
git log br1..master
git log br1…master
git log HEAD
git log FETCH_HEAD
git log HEAD..FETCH_HEAD
git log HEAD…FETCH_HEAD
Создание наблюдений (git remote)
Команда git remote применяться для создания «наблюдений» за другими репозиториями. Позволяет удобно сливаться с другими репозиториями.
git remote
git remote add name path
git remote rm name
Загрузка удалённого репозитория (git fetch)
Команда git fetch позволяет загрузить удалённый репозиторий в раздел «наблюдения» локального репозитория. Загрузить репозиторий — ещё не значит «слиться» с ним. Для слияния используется команда git merge.
git fetch
git fetch repo branch
Слияние двух состояний (git merge)
Команда git merge выполняет слияние двух состояний HEAD и FETCH_HEAD в новое HEAD состояние. Если происходит конфликт изменений, то эти файлы выходят из index (staging area), до тех пор, пока вы не исправите конфликт и не поместите их обратно в index командой «git add .«.
Команда слияния всегда занимает отдельную фиксацию, при слиянии не допускается изменение каких-либо файлов
Обновление репозитория (git pull)
Команда git pull выполняет подгрузку удалённого репозитория и производит слияние с ним. Данная операция аналогична последовательному выполнению двух операций: git fetch и git merge.
Клонировать репозиторий (git clone)
Команда git clone создаёт копию репозитория и устанавливает настройки для наблюдения за оригинальным репозиторием. Эти настройки применяются в командах fetch, push, pull.
Втолкнуть изменения в удалённый репозиторий (git push)
Команда git push позволяет втолкнуть изменения текущего репозитория в удалённый. По умолчанию, вталкивать данные можно только в «голые» репозитории.
git push
git push origin master
Откат изменений (git reset)
Команда git reset позволяет откатить изменения или неудачное слияние до последнего стабильного состояния (до последней фиксации).
Создание отметок готовности (git tag)
Команда git tag позволяет отметить текущее состояние, как некоторое конечное состояние для новой версии вашего проекта. Используется для создания списка стабильных версий проекта. Заметка: имя метки tag может использоваться в командах checkout и других командах, на ровне с именами фиксаций, именами ссылок (HEAD, FETCH_HEAD) и именами веток (master и т.п.).
git tag
git tag -m «описание» tagname
git tag -d tagname
Заключение
В этой части мы кратко рассмотрели список наиболее часто используемых команд при работе с Git. В следующей части мы рассмотрим практические примеры работы с Git.
Читать далее: Git в примерах
Смотрите также:
Автор: galiego710