Нетипичный блог

заметки про лайфстайл, коворкинг и интернет-маркетинг
Все заметки

Как работать с Git #1

Я работаю менеджером проектов и маркетёром-аналитиком. Но у меня есть хобби: я люблю программировать и верстать.
Совсем недавно я научился работать с Git. Я напишу несколько статей про, то как работать с системой контроля версий — «Git»

Git — мощная и сложная распределенная система контроля версий. Понимание всех возможностей git открывает для разработчика новые горизонты в управлении исходным кодом. Самый верный способ обучиться владению Git — испытать его своими руками.

0. Для начала установите Git-клиент

для Debian/Ubuntu

apt-get install git

Linux OS X Windows

1. Подготовка к работе

Установка имени и электронной почты

git config --global user.name "Your Name"
git config --global user.email "your_email@whatever.com"

2. Создание проекта

Сейчас мы научимся создавать git репозиторий с нуля.

Создайте страницу «Hello, World»

Начните работу в пустом рабочем каталоге с создания пустого каталога с именем «hello», затем войдите в него и создайте там файл с именем hello.html с таким содержанием.

Выполните:

mkdir hello
cd hello
touch hello.html

Файл: hello.html

Hello, World

Создайте репозиторий

Теперь у вас есть каталог с одним файлом. Чтобы создать git репозиторий из этого каталога, выполните команду git init.

Выполните:

git init

Результат:

$ git init
Инициализированный пустой репозиторий Git в /home/isaevdimka/PhpstormProjects/git_tutorial/work/hello/.git/

Добавьте страницу в репозиторий

Теперь давайте добавим в репозиторий страницу «Hello, World».

Выполните:

git add hello.html
git commit -m "First Commit"

Результат:

$ git commit -m "First Commit"
[master (root-commit) 79959ff] First Commit
 1 file changed, 1 insertion(+)
 create mode 100644 hello.html

4. Проверка состояния

Научимся проверять состояние репозитория

Проверьте состояние репозитория

Выполните:

git status

Результат:

$ git status
В ветке master
нечего фиксировать, рабочая директория пуста

Команда проверки состояния сообщит, что коммитить нечего. Это означает, что в репозитории хранится текущее состояние рабочего каталога, и нет никаких изменений, ожидающих записи.

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

5. Внесение изменений

Сейчас научимся отслеживать состояние рабочего каталога

Измените страницу «Hello, World»

Добавим кое-какие HTML-теги к нашему приветствию. Измените содержимое файла на:

Файл: hello.html

<h1>Hello, World!</h1>

Проверьте состояние

Теперь проверьте состояние рабочего каталога.

Выполните:

git status

Результат:

$ git status
В ветке master
Changes not staged for commit:
  (используйте "git add <file>..." чтобы обновить данные для закрепления)
  (используйте "git checkout -- <file>..." чтобы отменить изменения в рабочей директории)

	modified:   hello.html

нет изменений, добавленных в коммит (используйте "git add" и/или "git commit -a")

Первое, что нужно заметить, это то, что git знает, что файл hello.html был изменен, но при этом эти изменения еще не зафиксированы в репозитории.

Также обратите внимание на то, что сообщение о состоянии дает вам подсказку о том, что нужно делать дальше. Если вы хотите добавить эти изменения в репозиторий, используйте команду git add. В противном случае используйте команду git сheckout для отмены изменений.

6. Индексация изменений

Сейчас научимся индексировать изменения для последующих коммитов

Добавьте изменения

Выполните:

git add hello.html
git status

Результат:

$ git status
В ветке master
Изменения для закрепления:
  (используйте "git reset HEAD <file>..."  чтобы убрать из буфера)

	modified:   hello.html

Изменения файла hello.html были проиндексированы. Это означает, что git теперь знает об изменении, но изменение пока не перманентно записано в репозиторий. Следующий коммит будет включать в себя проиндексированные изменения.

Если вы решили, что не хотите коммитить изменения, команда состояния напомнит вам о том, что с помощью команды git reset можно снять индексацию этих изменений.

7. Индексация и коммит

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

Предположим, что вы отредактировали три файла (a.html, b.html, and c.html). Теперь вы хотите закоммитить все изменения, при этом чтобы изменения в a.html и b.html были одним коммитом, в то время как изменения в c.html логически не связаны с первыми двумя файлами и должны идти отдельным коммитом.

В теории, вы можете сделать следующее:

git add a.html
git add b.html
git commit -m "Changes for a and b"

 

git add c.html
git commit -m "Unrelated change to c"

Разделяя индексацию и коммит, вы имеете возможность с легкостью настроить, что идет в какой коммит.

8. Коммит изменений

Сейчас научимся коммитить изменения в репозиторий

Закоммитьте изменения

Достаточно об индексации. Давайте сделаем коммит того, что мы проиндексировали, в репозиторий.

Когда вы ранее использовали git commit для коммита первоначальной версии файла hello.html в репозиторий, вы включили метку -m, которая делает комментарий в командной строке. Команда commit позволит вам интерактивно редактировать комментарии для коммита. Теперь давайте это проверим.

Если вы опустите метку -m из командной строки, git перенесет вас в редактор по вашему выбору.

Сделайте коммит сейчас и проверьте состояние.

Выполните:

git commit

Результат:

$ git commit
В ветке master
Changes not staged for commit:
	modified:   hello.html

нет изменений, добавленных в коммит

Когда вы ранее использовали git commit для коммита первоначальной версии файла hello.html в репозиторий, вы включили метку -m, которая делает комментарий в командной строке. Команда commit позволит вам интерактивно редактировать комментарии для коммита. Теперь давайте это проверим.

Если вы опустите метку -m из командной строки, git перенесет вас в редактор по вашему выбору.

Сделайте коммит сейчас и проверьте состояние.

Выполните:

git commit

Результат:

$ git commit
В ветке master
Changes not staged for commit:
	modified:   hello.html

нет изменений, добавленных в коммит

Выполните:

git commit -a

В первой строке введите комментарий: «Added h1 tag». Сохраните файл и выйдите из редактора. Вы увидите…

Результат:

$ git commit -a
[master 807fc00] Added h1 tag
 1 file changed, 1 insertion(+), 1 deletion(-)

Проверьте состояние

В конце давайте еще раз проверим состояние.

Выполните:

git status

Результат:

$ git status
В ветке master
нечего фиксировать, рабочая директория пуста

Рабочий каталог чистый, можете продолжить работу.

9. Изменения, а не файлы

Цели

Понять, что git работает с изменениями, а не файлами.
Большинство систем версионного контроля работают с файлами. Вы добавляете файл в версионный контроль, а система отслеживает изменения файла с этого момента.

Git фокусируется на изменениях в файле, а не самом файле. Когда вы осуществляете команду git add file, вы не говорите git добавить файл в репозиторий. Скорее вы говорите, что git надо отметить текущее состояние файла, коммит которого будет произведен позже.

Мы попытаемся исследовать эту разницу в следующем посте…

Подписаться
Поделиться
Отправить
Класснуть
Вотсапнуть
15 января 2016 в 17:38
нет комментариев




Незаполнены: Неправильно заполнены: