GIT Slides (25.03.2015)

33

Transcript of GIT Slides (25.03.2015)

GIT - это просто!

Гора проектов, где у каждого участника своя зона комфорта

ответственности

I. Общие сведения

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

III. Итоги первой лекции

Что такое GIT?История появленияСильные стороны

Инициализация репозитория (init / clone)Добавление файлов (add)Что такое ветки и для чего они? (branch / checkout)Фиксация изменений (commit)Отправка своей ветки на сервер (push)Слияние (merge)

Полезные ресурсыhttps://try.github.io/github.com

Вводная лекция по GIT

I. Общие сведения

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

III. Итоги первой лекции

Что такое GIT?История появленияСильные стороны

Инициализация репозитория (init / clone)Добавление файлов (add)Что такое ветки и для чего они? (branch / checkout)Фиксация изменений (commit)Отправка своей ветки на сервер (push)Слияние (merge)

Полезные ресурсыhttps://try.github.io/github.com

Вводная лекция по GIT

Что такое GIT?

Распределённая система управления версиями файлов

История появления

2005 Линус Торвальдс

BitKeeperLinux

git

Сильные стороны

GIT - очень быстрый

OpenSource & Free

Простой и понятный

I. Общие сведения

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

III. Итоги первой лекции

Что такое GIT?История появленияСильные стороны

Инициализация репозитория (init / clone)Добавление файлов (add)Что такое ветки и для чего они? (branch / checkout)Фиксация изменений (commit)Отправка своей ветки на сервер (push)Слияние (merge)

Полезные ресурсыhttps://try.github.io/github.com

Вводная лекция по GIT

Инициализация репозитория (init / clone)

git init git init - эта команда инициализирует создание репозитория *

Репозиторий - это хранилище данных о проекте - история изменений, информация о ветках, владельце и т.д.

$ > mkdir my_super_project$ > cd my_super_project$ > git init$ > ls -a

Инициализация репозитория (init / clone)

git clone git clone - эта команда скопирует существующий репозиторий

$ > git clone http://dev.server.com/my_super_project.git$ > cd my_super_project$ > ls -a

Добавление файлов (add)

git add git add - добавляет файлы в индекс

Для git’а файлы делятся на две категории: те, которые он отслеживает и все остальные :)

Чтобы узнать какие файлы изменились, можно воспользоваться командой git status

git rm --cached удалит файлы из индекса, в отличие от обычной команды rm, которая удалит файлы физически.

.gitignore - внимание - спойлер!

.gitignore .gitignore - это не команда, а имя файла

Не всегда требуется учитывать изменения в файлах. Например, конфиги с паролями, логи, кеш -

все это не обязательно должно быть в индексе.

Возможное содержимое файла .gitignoredevelopment.logcache/*config/database.conf

Что такое ветки и для чего они? (branch / checkout)

Ветки позволяют разделять работу над проектом на независимые друг от друга участки.

Ветки принято создавать на каждую отдельную задачу: добавление функционала, изменение и т.д.

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

Основными командами являются git branch и git checkout

Что такое ветки и для чего они? (branch / checkout)

git branch git branch - покажет ветки * проекта

Ветка - это просто легковесный подвижный указатель на один из коммитов.

Ветка по умолчанию в Git'е называется master.

Когда вы создаёте коммиты на начальном этапе, вам дана ветка master, указывающая на последний сделанный коммит.

При каждом новом коммите она сдвигается вперёд автоматически.

Что такое ветки и для чего они? (branch / checkout)

git branch git branch - покажет ветки * проекта

Ветка - это просто легковесный подвижный указатель на один из коммитов.

$ > mkdir my_super_project && cd my_super_project$ > git init$ > git branch

звездочкой отмечена текущая выбранная ветка

Что такое ветки и для чего они? (branch / checkout)

git branch git branch - покажет ветки * проекта

Ветка - это просто легковесный подвижный указатель на один из коммитов.

$ > git branch ИМЯ_ВЕТКИ

Если веток несколько, между ними можно переключаться указав нужное имя

Что такое ветки и для чего они? (branch / checkout)

git checkout git checkout - создаст новую ветку

$ > mkdir my_super_project && cd my_super_project$ > git checkout ИМЯ_НОВОЙ_ВЕТКИ

Фиксация изменений (commit)

git commit git commit - фиксация состояния файлов

Коммит - сохраняет состояние файлов в ветке.

$ > git status$ > git add ИМЕНА_ФАЙЛОВ$ > git commit -m ‘Поясняющее сообщение’

git commit -a - коммит с ключом -a это коммит+push

Фиксация изменений (commit)

Что еще следует знать про коммит?

Все, что является частью коммита в Git'е, почти всегда может быть восстановлено. Даже коммиты, которые

находятся на ветках, которые были удалены, и коммиты переписанные с помощью --amend могут

быть восстановлены

Отправка своей ветки на сервер (push)

git push git push - отправить ветку в репозиторий

Пуш отправляет указанную ветку во внешний репозиторий, который может находиться где угодно.

$ > git commit -m ‘Поясняющее сообщение’$ > git push origin ИМЯ_ВЕТКИ

origin - это адрес удаленного репозитория, куда будет отправлен push и с которого будет сделан pull

узнать эти значения можно при помощи команды git remote -v

Отправка своей ветки на сервер (remote)

git remote git remote - вернут названия настроенных удаленных репозиториев

Названий может быть несколько и для получения полной информации об адресах надо указывать ключ -v

$ > git remote -v$ > origin http://dev.server.com/my_super_project.git (fetch)$ > origin http://dev.server.com/my_super_project.git (push)

Дополнительная информация по команде remote

Можно добавить столько удаленных репозиториев, сколько необходимо для текущего проекта.

Делается это следующим образом:

$ > git remote add ilya.v http://ilya.server.ru/work_project.git$ > git remote -v$ > ilya.v http://ilya.server.ru/work_project.git (fetch)

$ > origin http://dev.server.com/my_super_project.git (fetch)$ > origin http://dev.server.com/my_super_project.git (push)

$ > ilya.v http://ilya.server.ru/work_project.git (push)

Слияние (merge)

git merge git merge - объединит указанные ветки

Главным образом merge используется для слияния различных веток с веткой master

$ > git checkout master$ > git merge ИМЯ_ВЕТКИ_КОТОРАЯ_БУДЕТ_СЛИТА_С_MASTER

Если в процессе слияния не возникнет конфликтов, то изменения из ветки попадут в master

Pull

git pull git pull - подтянет изменения из репозитория

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

$ > git pull master$ > git fetch && git merge — это аналог команды git pull

Pull смотрит в ветку master основного репозитория

I. Общие сведения

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

III. Итоги первой лекции

Что такое GIT?История появленияСильные стороны

Инициализация репозитория (init / clone)Добавление файлов (add)Что такое ветки и для чего они? (branch / checkout)Фиксация изменений (commit)Отправка своей ветки на сервер (push)Слияние (merge)

Полезные ресурсыhttps://try.github.io/github.com

Вводная лекция по GIT

Полезные ресурсы

https://try.github.io/

github.com

http://git-scm.com/book/ru/v1

15 минут времени на вводный курс по git:

Годная книга по всем аспектам git:

Полигон для тренировок с мануалом и гистами:

gist.github.com

Первая лекция завершена.

Спасибо!

GIT - это просто!

GIT - наш друг