Вы когда-нибудь работали над таким громоздким проектом, что боялись обновить файл или добавить функцию? Возможно, проблема была в том, что вы не использовали систему контроля версий. В сегодняшнем уроке мы изучим основы того, что может быть лучшей VCS в мире: Git .
Что такое Git?
Git — инструмент управления открытым исходным кодом; он был создан Линусом Торвальдсом, когда он собирал ядро Linux. Из-за этих корней это должно было быть действительно быстро; что это так, и легко освоиться. Git позволяет вам работать над своим кодом с уверенностью, что все, что вы делаете, обратимо. Это позволяет легко экспериментировать с новыми идеями в проекте и не беспокоиться о том, чтобы что-то сломать. Притча о Git Тома Престона-Вернера — отличное введение в термины и идеи Git.
Почему я должен использовать Git?
Вы обязательно должны использовать систему контроля версий; как мы уже говорили, это дает вам свободу делать с кодом все, что вы хотите, и не беспокоиться о его нарушении. Итак, если вы поняли преимущества использования системы контроля версий, зачем вам использовать git? Почему не SVN или Perforce или еще один? Если честно, я не слишком внимательно изучил различия; проверьте WhyGitIsBetterThanX.com для некоторой полезной информации.
Как мне настроить?
Git довольно легко получить: на Mac, вероятно, проще всего использовать git-osx-installer . Если у вас установлен MacPorts , вы можете получить Git через него; Вы можете найти инструкции на сайте справки GitHub . (И да, мы поговорим о GitHub). В Windows самый простой способ начать работу — использовать установщик msysgit . Однако, если у вас есть Cygwin , вы можете использовать Git и там.
Как мне использовать Git?
К настоящему времени у вас должен быть установлен Git; если вы на Mac, откройте терминал; если вы используете Windows, откройте Git Bash (из msysgit) или приглашение Cygwin. С этого момента не должно быть никаких различий в ОС.
конфигурация
Мы начнем с небольшой настройки. Каждый сделанный вами коммит будет иметь ваше имя и адрес электронной почты, чтобы идентифицировать «владельца» коммита, поэтому вам следует начать с предоставления этих значений. Для этого выполните следующие команды:
git config --global user.name "Ваше имя" git config --global user.email "[email protected]"
Также приятно включить некоторую окраску текста, просто для удобства чтения в терминале.
1
2
3
|
git config —global color.diff auto
git config —global color.status auto
git config —global color.branch auto
|
мерзавец
Теперь, когда Git знает, кто вы, давайте представим, что мы создаем простое веб-приложение на PHP. (Конечно, чем больше проект, тем ярче светится Git, но мы просто изучаем инструменты, верно?) У нас есть пустой каталог с именем «mySite». Сначала сфокусируйтесь на этом каталоге (используя команду cd). Чтобы начать работать с Git, вам нужно запустить команду git init; как вы можете догадаться, это инициализирует Git-репозиторий в этой папке, добавляя в него папку .git. Репозиторий похож на книгу по истории кода. Он будет содержать все прошлые версии вашего кода, а также текущую.
Обратите внимание, что к вашему терминальному пути добавляется (master). Это та ветка, над которой вы сейчас работаете. Ветвь? Думайте о своем проекте как о дереве; Вы можете создавать различные функции в разных ветках, и все останется отдельным и безопасным.
мерзавец добавить
Мы начали работать над нашим приложением.
Прежде чем идти дальше, мы должны сделать наш первый коммит. Коммит — это просто указатель на место в вашей истории кода. Однако, прежде чем мы сможем это сделать, нам нужно переместить любые файлы, которые мы хотим быть частью этого коммита, в промежуточную область. Область подготовки — это место для хранения файлов для вашего следующего коммита; может быть, вы не хотите фиксировать все свои текущие изменения, поэтому вы помещаете их в промежуточную область. Мы можем сделать это с помощью команды добавления
мерзавец добавить.
. просто значит добавить все. Вы могли бы быть более конкретным, если хотите.
git add * .js git add index.php
мерзавец совершить
Теперь, когда мы подготовили наши файлы, давайте передадим их. Это делается с помощью команды
мерзавец совершить
Это берет все файлы в нашей области подготовки и помечает этот код как точку в истории нашего проекта. Если вы не добавите какие-либо параметры в команду выше, вы получите что-то вроде этого.
Каждый коммит должен иметь сопроводительное сообщение, чтобы вы знали, почему этот код был зафиксирован. Этот редактор позволяет вам написать ваше сообщение, а также посмотреть, что находится в этом коммите. На изображении выше вы можете видеть, что этот коммит состоит из четырех новых файлов. Редактор, который вы используете для написания сообщения — Vim; если вы не знакомы с vim, знайте, что вам нужно нажать i (для вставки), прежде чем вы сможете напечатать сообщение. На приведенном выше снимке я добавил сообщение «Initial Commit». После того, как вы напишите свое сообщение, нажмите escape и наберите: wq (чтобы сохранить и выйти). Затем вы увидите, что вы совершаете.
Вы можете использовать несколько вариантов, чтобы совершать коммиты быстрее. Во-первых, -m позволяет добавить ваше сообщение в строке.
git commit -m "начальный коммит"
Затем -a позволяет пропустить область подготовки; Ну не совсем. Git автоматически ставит и фиксирует все измененные файлы, когда вы используете эту опцию. (помните, он не будет добавлять новые файлы). Вместе вы можете использовать эти команды следующим образом:
git commit -am 'update to index.php'
Так как же Git сообщает о коммитах? Вместо нумерации их Git использует содержимое кода коммита для создания 40-символьного хэша SHA1. Важная часть этого заключается в том, что, поскольку он использует код для создания хэша, никакие два хэша в вашем проекте не будут одинаковыми, если только код в коммитах не будет идентичным.
мерзавец статус
Команда git status позволяет вам видеть текущее состояние вашего кода. Мы только что сделали коммит, поэтому статус git покажет нам, что в этом нет ничего нового.
Если мы продолжим работу над нашим воображаемым проектом, вы увидите, что наш статус меняется. Я собираюсь отредактировать наш index.php и добавить еще один файл. Теперь, запуск статуса git дает нам это:
Обновление разделено на две категории: «измененные, но не обновленные» и «неотслеживаемые файлы». Если мы запустим
git add userAuthentication.php мерзавец статус
вы увидите, что теперь у нас есть раздел «изменения должны быть зафиксированы». В этом списке перечислены файлы, добавленные в область подготовки. Я собираюсь совершить эти изменения с этим:
git commit -am 'код аутентификации пользователя добавлен'
Теперь запущенный git status показывает нам чистый рабочий каталог.
git branch / git checkout
Вот сценарий: мы счастливо работаем над нашим проектом, когда вдруг у нас появляется грандиозная идея. Эта идея настолько революционная, что она кардинально изменит наш проект. Мы должны попробовать, но мы не хотим добавлять этот небезопасный, первый черновой код в наш проверенный и настоящий код. Что делать? Вот где Git Branch будет очень полезен. Давайте развернем наш проект так, чтобы, если наша большая идея не сработала, не было никакого вреда.
мерзавец ветка
Просто запустив команду ветки sans , вы увидите список наших веток; сейчас у нас есть только основная ветвь, с которой начинается любой git-репозиторий. Чтобы фактически создать новую ветку, добавьте имя вашей новой ветви после команды.
Git Branch BigIdea
Когда вы создаете новую ветку, вы не переключаетесь на нее автоматически. Обратите внимание, что наш терминал все еще говорит (мастер). Здесь мы используем ветки товарищ команды git checkout .
Git Checkout BigIdea
(Совет: вы можете создать ветку и переключиться на нее одним махом с помощью этой команды: git checkout -b имя ветви .) Как вы можете видеть, мы сейчас находимся в ветви bigIdea. Давайте закодируем шторм. Git статус покажет нашу работу.
Давайте передадим наши изменения:
мерзавец добавить. git commit -m 'Добавлена функция Kiler'
Хорошо, достаточно этой функции на данный момент; давайте вернемся к нашей основной ветке; но прежде чем я это сделаю, я хочу показать вам нашу текущую папку проекта.
Теперь переключитесь обратно на главную ветку; Вы знаете, как: Git Checkout Master . Посмотрите на нашу папку проекта еще раз.
Нет, я ничего не делал; эти два файла являются только частью ветви bigIdea, поэтому мы даже не знаем, что они существуют из основной ветви. Это работает не только для полных файлов, но и для самых маленьких изменений в файлах.
мерзавец слияния
Итак, мы работали над этой веткой bigIdea в наше свободное время. На самом деле, после очередного коммита это выглядит так мило, что мы решили, что достаточно, чтобы присоединиться к основной ветке. Так как нам это сделать?
Команда git merge создана именно для этой цели. Находясь в основной ветке, попробуйте:
Git Merge BigIdea
Это так просто; теперь все в ветви bigIdea является частью основной ветви. Вы можете избавиться от ветви bigIdea сейчас, если хотите.
1
|
git branch -d bigIdea
|
Я должен отметить, что если вы не слили ветку, Git не позволит вам удалить ее с помощью этой команды; вам нужно использовать заглавную букву D в опции. Это всего лишь мера безопасности.
Git Log / Gitk
Возможно, вы захотите взглянуть на историю ваших коммитов в какой-то момент вашего проекта. Это легко сделать с помощью команды log.
мерзавец
Это выведет список всех коммитов, которые вы сделали в проекте, показывая их в обратном порядке. Вы можете получить довольно аккуратный кусок информации здесь:
- автор коммита
- хеш коммита
- дата и время
- сообщение
Определенно информативно, но довольно сухо, нет? Мы можем немного прояснить ситуацию с помощью опции графика.
git log --graph
Теперь мы можем видеть древовидную структуру, вроде. Хотя мы не получаем их имен, мы можем видеть каждую из ветвей и какие коммиты были сделаны на них. Если вы привыкли работать в терминале, вы можете с этим справиться. Однако, если (до этого опыта) слово « терминал» сначала показалось вам чем-то смертельным, дышите легко: для этого есть приложение. Попробуй это:
Гитк - все
Это графический браузер хранилища. Вы можете просматривать свои коммиты, видеть, что именно было изменено в каждом файле во время коммита, и многое другое. (Вы заметите, что я добавил несколько коммитов перед слиянием, просто чтобы сделать древовидную структуру более узнаваемой.)
GitHub
Теперь, когда у вас есть достаточные знания о Git, давайте рассмотрим некоторые совместные части Git. Git — отличный способ поделиться кодом с другими и работать над проектами вместе. Существует множество сайтов, на которых размещаются репозитории Git. Мы просто посмотрим на один: GitHub .
Перейдите на страницу регистрации в GitHub и создайте учетную запись. Вам понадобится открытый ключ SSH, поэтому давайте создадим его прямо сейчас! (Примечание: вам не нужен ключ при регистрации; вы можете добавить его позже.)
Откройте свой терминал и введите это:
ssh-keygen -t rsa -C "[email protected]"
Опция t назначает тип, а опция C добавляет комментарий, традиционно ваш адрес электронной почты. Затем вас спросят, где сохранить ключ; достаточно нажать Enter (это сохранит файл в папку по умолчанию). Затем введите пароль дважды. Теперь у вас есть ключ; давайте отдадим это GitHub.
Сначала получите ваш ключ из файла; терминал скажет вам, где хранится ключ; откройте файл, скопируйте ключ (будьте осторожны, чтобы не добавлять новые строки или пробелы). Откройте страницу своей учетной записи GitHub, выделите Открытые ключи SSH и нажмите «Добавить еще один открытый ключ». Вставьте свой ключ и сохраните его. Тебе хорошо идти! Вы можете проверить свою аутентификацию, выполнив это:
ssh [email protected]
Вам будет предложено ввести пароль; чтобы избежать необходимости вводить это каждый раз, когда вы подключаетесь к GitHub, вы можете автоматизировать это. Я мог бы рассказать вам, как это сделать, но я бы, вероятно, случайно плагиат: в справке GitHub есть статья на английском языке о том, как это сделать .
Git Clone
Итак, теперь вы настроены с GitHub; давайте возьмем проект. Как насчет jQuery? Если вы зайдете в проект jQuery GitHub , вы найдете URL-адрес git clone. Запустите это:
git clone git: //github.com/jquery/jquery.git
Это создаст папку jquery и скопирует весь репозиторий jquery на ваш компьютер. Теперь у вас есть полная история проекта; проверить это с помощью gitk -all .
мерзавец
Допустим, вы работали над проектом, управляя им с помощью git локально. Теперь вы хотите поделиться этим с другом или с миром. Войдите в GitHub и создайте новый репозиторий. GitHub предоставит вам общедоступный URL-адрес клонирования (для тех, кто хочет загрузить ваш проект) и персональный URL-адрес клонирования (для себя).
Затем вернитесь к своему проекту в терминале и приведите это в движение:
git remote добавить источник [email protected]: andrew8088 / Shazam.git
Удаленный — это хранилище проекта в удаленном месте. В этом случае мы даем этому пульту имя источника и передаем его нашему частному URL-клону. (Очевидно, вам придется заменить мой URL своим собственным.) Теперь, когда проект знает, куда он идет. , ,
мастер происхождения git push
Это выдвигает основную ветвь к исходному удаленному. Теперь ваш проект доступен всему миру! Вернитесь на страницу своего проекта и посмотрите свой проект.
мерзавец
Вы можете быть на другом конце проекта: вы являетесь участником, а не владельцем. Когда владелец отправляет новый коммит в репозиторий, вы можете использовать git pull для получения обновлений. Git pull — это на самом деле комбинированный инструмент: он запускает git fetch (получение изменений) и git merge (объединяет их с текущей копией).
мерзавец
Вы установлены!
Ну, вы можете узнать намного больше о Git; надеюсь, вы выучили достаточно команд, чтобы помочь вам более разумно управлять вашим следующим проектом. Но не останавливайся здесь; проверить эти ресурсы, чтобы стать мастером Git!
- Git, GitHub и социальное кодирование (театр YUI)
- Учебный центр GitHub
- Gitcasts.com: скринкасты на Git
- Сайт Git
- Моя публичная Git Evernote-книга
- Подпишитесь на нас в Твиттере или подпишитесь на ленту Nettuts + RSS для получения лучших учебных материалов по веб-разработке.