Git основы. Git - что такое? Git для начинающих: описание. Готовим файлы для коммита

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

Описание

Git является для управления версиями разрабатываемых файлов. Создана она была в 2005 году автором ОС Linux. Эта система осуществляет синхронизацию работы с сайтом, а также сохраняет и обновляет изменения в файлах. Это очень удобный подход в случае работы над проектом нескольких разработчиков. На сегодняшний день во многих известных проектах используется именно Git. Что такое использование дает? К примеру, разработкой операционной системы Android занимается большое число программистов. Было бы крайне неудобно, если бы один из них вносил изменения, а другие об этом не знали. Git же позволяет всем быть в курсе всех изменений, а в случае ошибок вернуться к предыдущим версиям файлов.

Использование слепков, а не патчей

Главным отличием Git от других является то, как она смотрит на данные. Большая часть программ хранит информацию в виде списка изменений, называемых патчами для файлов. Такие системы к хранимым данным относятся как к набору файлов, а также набору изменений, которые сделаны для каждого файла, относительно времени. Как хранит свои данные Git? Что такое есть в этой системе, что отличает ее от других? Вместо патчей, хранимые данные здесь считаются набором слепков маленькой файловой системы. Всякий раз, когда пользователь фиксирует новую версию проекта, система просто сохраняет слепок состояния файлов на текущий момент. Чтобы повысить эффективность в том случае, когда файл не изменялся, система не сохраняет его, а делает ссылку на ранее сохраненный экземпляр, в который были внесены последние изменения.

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

Преимущественно локальные операции

Для того чтобы совершать большинство операций в Git, нужны лишь локальные ресурсы и файлы. Это означает, что чаще всего нет необходимости в информации, находящейся на других компьютерах, входящих в сеть. Так как все изменения проекта находятся на диске, выполнение операций происходит с молниеносной скоростью. Например, для того чтобы просмотреть историю проекта, ее не нужно загружать с сервера. Она считывается из локального репозитория на компьютере. Если нужно увидеть изменения между версией файла, которая была сделана месяц назад, и текущей, можно сделать это очень быстро, не обращаясь к серверу.

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

Наблюдение за целостностью данных

Перед тем как сохранить любой файл, ему присваивается индекс в виде контрольной суммы, вычисленной непосредственно Git. Что такое Это значение, которое рассчитывается при помощи специальных алгоритмов и используется для того, чтобы проверить целостность данных при их хранении и передаче. Здесь невозможно что-то изменить без ведома Git, и это важная составляющая философии системы.

Данные чаще всего добавляются

Почти все действия, совершаемые в Git, добавляют в базу данных. Удалить их очень трудно. Можно лишь потерять еще не сохраненную информацию, но при её фиксации потеря исключена. По этой причине многие выбирают именно Git, так как тут можно проводить эксперименты без рисков сделать что-то непоправимое.

Состояния файлов

Работа с Git для начинающих подразумевает запоминание того, что файл может находиться в одном из трех состояний:

  • Зафиксированное, то есть файл сохранен в локальном хранилище.
  • Измененное, когда правки были внесены, но сохранение еще не выполнено.
  • Подготовленное - измененные файлы, которые отмечены для сохранения.

Так, в проектах, в которых используется Git, имеется три раздела для разных состояний файлов:

  • Каталог Git, где хранятся метаданные, а также база данных объектов. Эта часть системы самая важная.
  • Рабочий каталог, который является извлеченной из базы данных копией какой-то версии проекта.
  • Файл, содержащий информацию о последующем сохранении.

Устанавливаем Git

Первое, что нужно сделать для того, чтобы использовать систему контроля версий - установить ее. Существует несколько способов для этого. Основными являются два варианта:

  • Установка Git из исходников.
  • Установка пакета для используемой платформы.

Установка Git из исходников

При наличии такой возможности лучше использовать данный вариант, так как будет получена самая свежая версия. Каждое обновление обычно содержит множество полезных улучшений, касающихся Именно поэтому, если установка из исходников не слишком для вас затруднительна, лучше предпочесть ее. Да и большинство дистрибутивов Linux включают в себя устаревшие пакеты.

Для установки понадобятся необходимые библиотеки: expat, curl, libiconv, openssl, zlib. После их инсталляции можно загрузить последнюю версию системы контроля версий, скомпилировать ее и установить.

Установка в операционной системе Windows

Если у пользователя нет Linux, а хочется использовать Git, Windows также поддерживает эту систему. И установить ее очень просто. Существует проект msysGit, процедура установки которого является одной из самых простых. Необходимо просто загрузить файл инсталлятора, который можно найти на странице проекта в GitHub, а затем запустить его. По окончании установки на компьютере будет две версии - графическая и консольная.

Первоначальная настройка Git

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

Git включает в себя утилиту git config, позволяющую делать настройки и контролировать работу системы, а также внешний вид. Данные параметры могут сохраняться в трех местах:

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

Пользовательское имя

В первую очередь после установки необходимо указать имя пользователя, а также электронную почту. Это очень важно, так как каждый коммит (сохранение состояния) содержит эти данные. Они включаются во все передаваемые коммиты и не могут быть изменены впоследствии.

Если указать опцию -global, такие настройки нужно будет сделать один раз.

Выбор текстового редактора

После указания имени нужно выбрать редактор, который будет необходим при наборе сообщений в Git. По умолчанию будет использоваться стандартный редактор операционной системы. Если пользователь захочет использовать другой, нужно прописать это в настройках конфигурационного файла в строке core.editor.

Проверка параметров

Чтобы знать основы Git, необходимо уметь проверять используемые настройки. Для этого применяется config -list. Она выводит все доступные параметры, которые сможет найти. Некоторые имена настроек могут присутствовать в списке несколько раз. Это происходит из-за того, что Git считывает один ключ из различных файлов. В такой ситуации для каждого ключа используется последнее значение. Есть возможность проверять значения определенных ключей, вписав в команду вместо «--list» - «{ключ}».

Как создать репозиторий

Достичь этой цели можно двумя способами. Первый заключается в импорте в систему существующего каталога или проекта. Второй - это клонирование с сервера уже существующего репозитория.

Создание в данном каталоге

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

Клонирование репозитория

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

Удаление файла в Git

Удалить из системы любой файл можно, если исключить его из индекса, то есть из отслеживаемых файлов. Для этого нужна команда git rm. Она также убирает файл из рабочего каталога пользователя. Затем нужно выполнить коммит. После него файл попросту исчезнет и отслеживаться больше не будет. Если же он изменен и уже проиндексирован, то применяют принудительное удаление с параметром -f. Такой способ предотвратит удаление тех данных, которые еще не записались в снимок состояния и которые нет возможности восстановить из системы.

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

В любой момент может появиться необходимость в отмене какого-либо действия. Если пользователь выполнил коммит рано, забыв внести некоторые файлы, то можно перевыполнить его, используя опцию --amend. Такая команда использует для коммита индекса. Если после выполнения последнего сохранения не производилось никаких изменений, то проект будет в таком же состоянии, и появится редактор для комментариев, где пользователь сможет отредактировать все, что нужно. Нужно помнить, что не каждую операцию отмены можно будет отменить. Иногда можно безвозвратно удалить необходимые данные. Следует быть внимательными.

Итоги

Теперь у пользователя должно сформироваться представление о том, что такое Git, для чего нужна эта система контроля версий, чем она отличается от других подобных продуктов. Понятно, что для полного ознакомления необходимо установить рабочую версию Git с персональными настройками под себя. Не помешает какой-нибудь учебник или видеокурс по Git для «чайников», который сможет пошагово провести пользователя по всем этапам работы с системой.

Git GUI

Входит в комплект git - Запустите git gui из командной строки, а установщик Windows msysgit добавит его в меню "Пуск".

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

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

Это не самое приятное приложение, но оно работает практически на всех платформах (основано на Tcl/Tk)

GitK

Также включен в git. Это средство просмотра истории git и позволяет визуализировать историю репозитория (включая ветки, когда они созданы и объединены). Вы можете просматривать и выполнять поиск.

Хорошо сочетается с git -gui.

Gitnub

Приложение Mac OS X. В основном эквивалент git log , но имеет некоторую интеграцию с github (например, "Сетевой вид").

Выглядит красиво и подходит для Mac OS X. Вы можете искать репозитории. Самая большая критика Gitnub заключается в том, что он показывает историю линейным образом (по одной ветки за раз) - она ​​не визуализирует ветвление и слияние, что может быть важно с git, хотя это плановое улучшение.

GitX

Предназначен для "клонирования gitk для OS X".

Он может визуализировать нелинейную историю ветвления, выполнять коммиты, просматривать и выполнять поиск, а также имеет некоторые другие приятные функции, такие как возможность "Quicklook" любого файла в любой редакции (нажмите пробел в представлении списка файлов) экспортировать любой файл (с помощью перетаскивания).

Он намного лучше интегрирован в OS X, чем git-gui / gitk , и является быстрым и стабильным даже при исключительно больших репозиториях.

Оригинальный репозиторий git pieter не обновлялся недавно (более года на момент написания). Более активно поддерживаемая ветвь доступна в brotherbard/gitx - она ​​добавляет "боковую панель, выборку, вытягивание, толчок, добавление удаленного, слияния, выбирать, переустанавливать, клонировать, клонировать до"

SmartGit

На главной странице:

SmartGit - это интерфейс для распределенная система управления версиями Gitи работает на Windows, Mac OS X и Linux. SmartGit предназначен для разработчики, предпочитающие графического пользователя интерфейс через клиент командной строки, быть еще более продуктивным с помощью git - самый мощный DVCS сегодня.

TortoiseGit

Версия TortoiseSVN git для пользователей Windows.

Он переносит TortoiseSVN на TortoiseGit. Последняя версия 1.2.1.0. Эта версия может выполнять обычную задачу, такую ​​фиксацию, журнал показа, разницу двух версий, создавать ветку и тег, создавать патч и т.д. Подробнее см. ReleaseNotes . Добро пожаловать, чтобы внести свой вклад в этот проект.

QGit

QGit - это средство просмотра git GUI, построенное на Qt/С++.

С помощью qgit вы сможете просматривать история изменений, просмотр содержимого патча и измененные файлы, графически после различной разработки ветки.

gitg

gitg - просмотрщик репозитория gitориентация gtk +/GNOME. Один из основных задача состоит в том, чтобы обеспечить более унифицированный пользовательский интерфейс для Gitинтерфейсы на нескольких рабочих столах. Это это не означает кросс-платформенное приложение, но тесное сотрудничество с аналогичными клиенты для других операционных систем (например, GitX для OS X).

Особенности

  • Просмотр истории изменений.
  • Обрабатывать большие репозитории (загружает репозиторий linux, 17000+ ревизий, менее 1 секунды).
  • Зафиксировать изменения.
  • Ступени/неустановленные отдельные куски.
  • Отменить изменения.
  • Показать расцветку изменений изменений в версиях.
  • Просмотр дерева для данной версии.
  • Экспортировать части дерева данной версии.
  • Поставьте любой refspec, который команда, например "git log", может понять, чтобы построить историю.
  • Показывать и переключаться между ветвями в виде истории.

Gitbox

Gitbox - графический Mac OS X интерфейс для управления версиями gitсистема. В одном окне вы видите веток, истории и работы статус каталога.

Ежедневные операции легки: этап и нестационарные изменения с помощью флажка. Зафиксировать, вытащить, слить и нажать с помощью один клик. Дважды щелкните изменение на показать diff с FileMerge.app.

Gity

На веб-сайте Gity не так много информации, но на скриншотах там есть полнофункциональный открытый OS X git gui с открытым исходным кодом.

Meld - инструмент визуального разграничения и слияния. Вы можете сравнить два или три файла и редактировать их на месте (diffs update динамически). Вы можете сравнить два или три папки и файл запуска сравнения. Вы можете просматривать и просматривать рабочая копия из популярной версии такие системы управления, как CVS, Subversion, Bazaar-ng и Mercurial [и Git].

Katana

A git GUI для OSX от Steve Dekorte.

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

Бесплатно для 1 репозитория, $25 для более.

Sprout (ранее GitMac)

Ориентация на создание git проста в использовании. Имеет собственный пользовательский интерфейс Cocoa (mac-like), быстрый просмотр репозитория, клонирование, push/pull, разветвление/слияние, визуальный diff, удаленные ветки, легкий доступ к терминалу и т.д.

Используя наиболее часто используемые действия git, интуитивно понятные и легко выполняемые, Sprout (ранее GitMac) делает git удобным для пользователя. Совместимость с большинством рабочих процессов git, Sprout отлично подходит для разработчиков и разработчиков, коллективной работы и продвинутых и начинающих пользователей.

Tower

Богатый графический интерфейс git для Mac OSX. 30-дневная бесплатная пробная версия, $59USD для однопользовательской лицензии.

Система контроля версий или VCS может значительно облегчить работу разработчиков, пытающихся проанализировать изменения и вклады в общий код. Проще говоря, система контроля версий – это ключевой элемент в системе управления настройками программного обеспечения, которые отвечают потребностям проекта. VCS дают возможность назначать для определенных изменений/ревизий/обновлений буквенные или числовые значения. Также могут предоставить информацию о временных метках и идентификаторе человека внесшего изменения. В этом руководстве мы расскажем вам о самой часто используемой системе контроля версий – GIT. Вы узнаете, что такое GIT и какие он имеет преимущества перед остальными VCS, а также мы расскажем об установке GIT на разные системы и его правильном использовании.

В 2005 году, Линус Торвальдс (человек, известный тем, что стоял за созданием ядра Linux OS) разработал GIT для управления версиями ядра Linux, однако, чуть позднее его поддержкой занялся другой человек, японский инженер-программист – Джунио Хамано. На сегодняшний день, GIT – это одна из самых известных систем контроля версий с открытым исходным кодом, на которую полагаются миллионы проектов по всем миру (включая как коммерческие, так и бесплатные проекты). GIT – это полностью бесплатное программное обеспечение, поддерживающее множество ОС, таких как Mac, Linux, Windows и Solaris. Скачать соответствующие дистрибутивы можно с официального сайта GIT Вот несколько функций GIT достойных упоминания:

  1. Распределенная система управления версиями, GIT следует принципу одноранговой сети – peer to peer (равный к равному) в отличии от других систем вроде Subversion (SVN), которая основана на модели client-server (клиент-сервер).
  2. GIT позволяет разработчикам иметь множество совершенно независимых веток кода. Создание, удаление и объединение этих веток происходит без каких-либо проблем и больших затрат времени.
  3. В GIT все операции атомарны; это означает, что любое действие может быть полностью удачным или провалиться (без каких-либо изменений). Это действительно важно, так как в некоторых системах контроля версий (вроде CVS), где действия не атомарны, некоторые повисшие операции по всему хранилищу, могут оставить его в нестабильном состоянии.
  4. В отличии от других VCS, таких как SVN или CVS где метаданные хранятся в скрытых папках (.cvs, .svn, и т.д.), в GIT все данные расположены в каталогах.git.
  5. Он использует модель данных, которая помогает обеспечить криптографическую целостность всего, что присутствует в репозитории. Каждый раз когда файлы добавляются или коммитятся, генерируются их контрольные суммы; аналогичный процесс происходит при их извлечении.
  6. Еще одна превосходная функция, присутствующая в GIT – это его индекс . В пределах индекса, разработчики могут форматировать коммиты и просматривать их до фактического применения.

Вот пожалуй мы и ответили на вопрос “Что такое GIT”.

Он довольно прост в использовании. Для начала, вы можете либо создать новое хранилище, либо добавить существующее. После установки, команда git-init поможет вам с настройкой нового хранилища, или команда git clone поможет настроить пользователя для работающей копии локального хранилища.

Шаг 1 - Установка GIT

В данной части руководства будут показаны простейшие способы установки GIT на разные операционные системы:

Вариант 1 - Установка GIT на Windows

Установка GIT на Windows, осуществляется также просто, как и установка любого другого приложения; загрузка установщика и его запуск. Выполните данные шаги для установки GIT на Windows:

  1. Посетите этот сайт и скачайте установщик GIT для Windows.
  2. После загрузки, запустите установку двойным нажатием мыши. Следуйте инструкциям на экране, продолжайте нажимать Next (Далее) и наконец Finish (Финиш) для успешного завершения установки.
  1. Запустите командную строку и впишите следующие команды в терминале:

ЗАМЕТКА! Не забудьте изменить John Smith и [email protected] на ваши собственные личные данные. Любые впоследствии созданные коммиты будут связаны с этими данными.

Это все что нужно для установки GIT на Windows.

Вариант 2 - Установка GIT на Mac

Существует множество способов для установки GIT на Mac, есть даже вероятность того, что GIT уже установлен на вашем компьютере. Eсли у вас установлен XCode; выполните следующую команду в терминале для проверки:

Git --version

Если ваш результат будет схож с таким git version 2.7.0 (Apple Git-66), тогда можете смело приступать к работе с GIT, если нет, то выполните следующие шаги:

  1. Посетите и скачайте последнюю версию установщика для Mac.
  2. Следуйте инструкциям установщика и завершите установку.

  1. Используйте команду git –version снова, для подтверждения того, что установка была успешна.
git config --global user.name "John Smith" git config --global user.email "[email protected]"

ЗАМЕТКА! Не забудьте изменить John Smith и [email protected]

Вариант 3 - Установка GIT на Linux

Если вы являетесь пользователем Linux, вы должны уметь устанавливать программы и пакеты на ваш компьютер используя простые команды apt-get или yum install; чтож, установка GIT ничем отличается:

Для пользователей Debian/Ubuntu (apt-get):

  1. Откройте терминал и выполните следующую команду:
sudo apt-get update sudo apt-get install git
  1. Проверьте правильности установки командой git –version.
  2. Выполните следующие команды в терминале для настройки вашего имени пользователя и адреса электронной почты, которые будут связаны с вашим GIT аккаунтом:
git config --global user.name "John Smith" git config --global user.email "[email protected]"

ЗАМЕТКА! Не забудьте изменить John Smith и [email protected] на ваши собственные данные. Любые созданные в дальнейшем коммиты будут связаны с ними.

Fedora (yum/dnf):

Вы можете получить пакеты GIT, используя как yum, так и dnf.

  1. Откройте терминал и выполните следующие команды:
sudo dnf install git sudo yum install git
  1. Проверьте правильность установки командой git –version.
  2. Выполните следующие команды в терминале для настройки вашего имени пользователя и адреса электронной почты, которые будут связаны с вашим GIT аккаунтом:
git config --global user.name "John Smith" git config --global user.email "[email protected]"

ЗАМЕТКА! Не забудьте изменить John Smith и [email protected] на ваши собственные данные. Любые созданные в дальнейшем коммиты будут связаны с ними.

Шаг 2 - Использование GIT

Теперь, когда GIT настроен на вашем устройстве Windows / Mac / Linux, давайте изучим основы GIT и то, как вы можете начать с ним работу.

  • Создание/настройка/клонирование репозитория:

Репозиторий является одним из самых сильных инструментов любого проекта с контролем версий. Для превращения любого каталога в репозиторий GIT поможет простая команда git init <каталог>. После выполнения команды, в месте где была выполнена команда должен появиться каталог с названием.git.

Если же у вас уже имеется каталог и вы хотите добавить (клонировать) его используйте команду git clone . Для клонирования локального репозитория используйте следующую команду:

Git clone /путь/до/локального/репозитория

Если вы планируете клонировать удаленный репозиторий используйте:

Git clone user.name@host:/путь/до/удаленного/репозитория

Если у вас есть учетная запись Hostinger, вы легко можете клонировать и управлять репозиторием через инструмент в Панели управления GIT . К примеру, вы хотите клонировать репозиторий GIT, просто введите его адрес, выберите ветку, путь установки и нажмите кнопку Создать .

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

  • Рабочий процесс:

Теперь, когда репозиторий настроен, давайте поговорим о его структуре. Каждый локальный репозиторий состоит из трех деревьев: рабочего каталога – который состоит из файлов, индекса – который играет роль места где проходят все изменения перед их применением и HEAD – являющегося указателем на последний коммит пользователя. Сам рабочий процесс можно объяснить таким образом: пользователь добавляет файл или изменение из рабочего каталога в индекс, далее после его просмотра и анализа оно применяется к HEAD .

  • Команды Add и Commit:

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

Git add <имя_файла>

Если вы достаточно уверены в изменении для его коммита к HEAD , вы можете использовать команду commit. Для этого используйте следующую команду:

Git commit –m “Добавьте здесь любое сообщение описывающее коммит”

ЗАМЕТКА! Как только команда commit будет выполнена (из рабочего каталога), будет произведен коммит файла к HEAD , однако отправка на удаленный репозиторий произведена не будет, для этого используется отдельная команда.

  • Дальнейшее продвижение изменений:

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

После выполнения команды git push origin master из рабочего каталога, все изменения присутствующие в HEAD будут отправлены на удаленный репозиторий. В вышеупомянутой команде, значение master должно быть изменено на название ветки для которой вы хотите произвести коммит изменений.

Однако, если существующий репозиторий еще не был клонирован и вы хотите установить соединение между вашим репозиторием и удаленным сервером, сделайте это, запустив следующую команду:

Git remote add origin <сервер>

ЗАМЕТКА! Замените значение в коде <сервер> на адрес удаленного сервера, который вам необходим в данный момент.

После клонирования, любые сделанные изменения будут перенесены на соответствующий сервер.

  • Ветки:

Еще одной превосходной и продвинутой особенностью GIT является возможность разработчикам и руководителям проектов создавать несколько независимых веток в рамках одного проекта. Основная цель ветки – это разработка функций, которые при этом находятся изолированно и не влияют друг на друга. Стандартная ветвь в любом проекте всегда является главной веткой. По мере необходимости, может быть создано любое количество веток, которые в конечном итоге могут быть объединены с главной веткой.

Новая ветка может быть создана с помощью данной команды:

Git checkout -b feature_n *

feature_n это имя ветки

Если вы хотите переключиться обратно к главной ветке, используйте следующую команду:

Git checkout master

При помощи данной команды может быть удалена любая ветка:

Git checkout -d feature_n

Для того, чтобы сделать ветку доступной для других пользователей, вы должны отправить ее на удаленный репозиторий. Для этого введите данную команду:

Git push origin feature_n

  • Обновление и объединение:

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

Для объединения активной ветки с какой-либо другой воспользуйтесь этой командой: git merge feature_n.

Используете ли вы pull или merge, GIT всегда пытается справиться с возникающими конфликтами самостоятельно, но это не всегда у него получается. В случае неудачи выполнения команды, пользователь должен разрешить возникший конфликт вручную. После того, как вы отредактировали файлы (для устранения конфликта), пометьте их как merged с помощью команды:

Git add <имя.файла>

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

Git diff <имя_ветки_источника> <имя_целевой_ветки>

  • Маркировка:

Перед выпуском обновлений или ревизий в программном обеспечении, рекомендуется создать для них метки или теги. Для выполнения данного действия в GIT, выполните данную команду:

Git tag 1.1.0 1c2d2d56fa

1c2d2d56fa в вышеприведенной команде относится к первым 10 символам commit-id, на которые ссылается тег. Идентификатор коммита или Commit ID можно найти в журнале.

  • Журнал:

Изучить историю репозитория можно заглянув в журнал. Команда для вызова журнала git log. Для отображения коммитов сделанных конкретным пользователем, используйте:

Git log --author =Имя

Сжатую версию журнала (один коммит на строке) можно просмотреть при помощи команды:

Git log --pretty=oneline

Для просмотра измененных файлов:

Git log --name-status

  • Замена локальных изменений:

Если вы каким-то образом навели беспорядок и хотите отменить изменения, сделанные в файле, произведите этот процесс с помощью следующей команды:

Git checkout -- <имяфайла>

Выполнив эту команду вы замените измененные данные в рабочем дереве на последние данные находящиеся в HEAD . Любые изменения, которые уже были добавлены в индекс не пострадают.

И наоборот, если все локальные изменения или фиксации должны быть удалены, а локальная главная ветвь должна быть привязана к последней истории с сервера, выполните следующие команды:

Git fetch origin git reset --hard origin/master

Противостояние изменениям - основная черта человека. Если в то время, когда вы начинали работу с системами контроля версий, не было Git - весьма вероятно, что вы начинали с Subversion. Часто люди говорят, что Git слишком сложен для начинающих. Тем не менее, я позволю себе с вами не согласиться.

В этой статье я расскажу, как можно использовать Git в работе с вашими проектами. Будем считать, что вы создаете проект с нуля, и хотите использовать Git в качестве системы контроля версий. После ознакомления с основными командами, мы ознакомимся с тем, как можно выложить ваш код на GitHub.

В этой статье речь пойдет об основных вещах - как инициализировать проект, как управлять новыми и уже существующими файлами, и как хранить свой код в облаке. Мы опустим некоторые сложные вещи, как ветвление, так как статья ориентирована на начинающих.

Установка Git

На официальном сайте Git есть на различные системы - Linux, Mac, Windows. В нашем случае мы будем использовать Ubuntu 13.04, и Git мы будем устанавливать посредством apt-get .

Sudo apt-get install git

Начальная конфигуация

Создадим директорию, в которой мы будем работать. Также вы можете использовать Git для работы с уже существующим проектом, и в таком случае вы не будете создавать демонстрационную директорию, как это описано ниже.

Mkdir my_git_project cd my_git_project

Первым делом надо инициализировать Git-репозитарий в директории проекта. Сделать это можно командой init , которая создает директорию.git со всей информацией о вашем проекте.

Git config --global user.name "Shaumik" git config --global user.email "[email protected]" git config --global color.ui "auto"

Стоит отметить, что если вы не укажете ваш адрес и имя, то вместо них будут использоваться значения по умолчанию. В нашем случае значениями по умолчанию будут donny и donny@ubuntu.

Также мы устанавливаем цвет интерфейса в значение auto , так что вывод команд Git будет цветным. Мы добавляем префикс --global к этим командам для того, чтобы эти значения использовались во всей системе, и не было необходимости их задавать для каждого отдельного проекта.

Готовим файлы для коммита

Следующим шагом мы создадим несколько файлов. Можно использовать для этого любой текстовый редактор. Заметьте, что если вы инициализируете Git в уже существующем проекте, вам не нужно делать этот шаг.

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

Теперь, когда в вашем проекте есть файлы, давайте посмотрим, как Git с ними обращается. Чтобы проверить текущий статус репозитария, используйте команду git status

Добавляем файлы в Git

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

Git add my_file

Проверив статус репозитария видим, что один из файлов уже добавлен в него.

Чтобы добавить несколько файлов, используем следующее (заметьте, что первый файл мы добавили ранее, так что добавляем только оставшиеся два).

Git add myfile2 myfile3

Можно использовать git add рекурсивно, но будьте осторожны с этой командой. Есть некоторые файлы (например, скомпилированные программы), которые не должны быть добавлены в систему контроля версий. Если вы используете git add рекурсивно, такие файлы также попадут в репозитарий.

Удаляем файлы

Представим, что вы случайно добавили в репозитарий файл, который не должен был туда попасть. Или же вы хотите убрать из системы контроля версий какой-либо файл. В общем, команда git rm не просто удалит файл из репозитария, но и физически удалит его с диска. Чтобы Git перестал отслеживать файл, но он остался на диске, используйте следующую команду:

Git rm --cached [имя_файла]

Коммитим изменения

Как только вы добавили все необходимые файлы, вы можете закоммитить (зафиксировать) их в Git. Представьте, что коммит - это снимок состояния проекта на определенном этапе, к которому вы можете вернуться в любой момент времени, и увидеть состояние проекта на тот момент. С каждым коммитом ассоциируется сообщение, которое задается аргументом после префикса -m

Git commit -m "Мой первый коммит"

Указывайте сообщение, которое будет содержать полезную информацию, так как они помогают понять, что же именно было изменено в рамках данного коммита. Избегайте каких-то общих сообщений, типа “Правил баги”. Если у вас есть баг-трекер, вы можете указать сообщение типа “Поправлен баг #123”. Хорошая практика - указывать в сообщении имя ветки или улучшения. Например, “Управление активами - добавлена возможность генерировать PDF на основе актива” - понятное и доходчивое сообщение.

Git определяет коммит длинным шестнадцатеричным номером. Обычно, нет необходимости копировать всю строку, первых 5-6 символов достаточно для идентификации конкретного коммита. По скриншоту видно, что наш коммит идентифицируется числом 8dd76fc .

Дальнейшие коммиты

Давайте изменим несколько файлов после того, как мы их закоммитили. После того, как мы их изменили, git status сообщит о том, что у нас есть измененные файлы.

Можно посмотреть, что же изменилось в этих файлах с момента предыдущего коммита, с помощью команды git diff . Если вы хотите просмотреть изменения для конкретного файла, можно использовать git diff <файл> .

Необходимо проиндексировать изменения, и закоммитить их. Все измененные файлы проекта можно добавить на коммит следующей командой:

Можно избежать использования этой команды, если добавить параметр -a к git commit . Эта команда проиндексирует все измененные файлы, и закоммитит их. Но такой подход может быть довольно опасным, так по ошибке можно закоммитить то, что не хотелось. Например, скажем, что вы открыли файл, и случайно его изменили. При индексировании измененных файлов вы будете оповещены об изменениях в каждом файле. Но если вы отправите на коммит все измененные файлы не глядя с помощь. git commit -a , то будут закоммичены все файлы, включая те, которые вы коммитить не хотели.

Как только вы проиндексировали файлы, можно приступать к коммиту. Как упоминалось ранее, к коммиту можно указать сообщение с помощью ключа -m . Но также можно указывать и многострочные комментарии с помощью команды git commit , которая открывает консольный редактор для ввода комментария.

Управление проеком

Чтобы просмотреть историю проекта, можно воспользоваться следующей командой:

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

Git show <хеш_коммита>

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

Для людей естественно сопротивляться изменениям. Если Git не встретился вам, когда вы начинали работать с системами контроля версий, наверняка вы чувствуете себя комфортнее в системе Subversion (SVN) .

Часто люди говорят, что Git слишком сложен для новичков. Тем не менее, я позволю себе не согласиться с этим.

В этом уроке я расскажу, как использовать Git в ваших проектах. Предположим, что вы создаете проект с нуля и хотите управлять им с помощью Git . Пройдясь по списку основных команд, вы получите представление о том, как разместить ваш код в облаке посредством GitHub .

В этой статье мы поговорим об основах Git – как инициализировать ваши проекты, как управлять новыми и существующими файлами, и как сохранить ваш код в облаке.

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

Установка Git

На официальном сайте Git есть детальная информация об его установке на Linux, Mac и Windows. В нашем случае, мы будем использовать в целях демонстрации Ubuntu 13.04 , где установим Git с помощью apt-get:

sudo apt-get install git

Начальная настройка

Давайте создадим каталог, внутри которого мы будем работать. В качестве альтернативы вы можете использовать Git для управления одним из существующих проектов; в таком случае вам не нужно будет создавать демо-каталог, как показано ниже:

mkdir my_git_project cd my_git_project

Первым этапом является инициализация Git в каталоге. Это можно сделать с помощью команды init , которая создает каталог .git , содержащий всю информацию, связанную с Git для вашего проекта.

git config --global user.name "Shaumik" git config --global user.email "[email protected]" git config --global color.ui "auto"

Важно отметить, что если вы не укажите свое имя и адрес электронной почты, то будут использованы значения по умолчанию. В нашем случае, значениями по умолчанию были бы имя пользователя donny и адрес электронной почты donny@ubuntu .

Кроме того, мы задаем для цвета пользовательского интерфейса значение auto , благодаря чему вывод команд Git будет иметь цветовую подсветку.

Префикс —global перед командами нужен для того, чтобы не вводить эти команды настроек в следующий раз, когда мы запустим проект Git в нашей системе.

Подготовка файлов для коммита

Следующий шаг - это создание файлов в каталоге. Вы можете использовать, к примеру, текстовый редактор Vim . Заметьте, что если вы собираетесь добавить Git к уже существующему каталогу, вам не нужно выполнять этот шаг:


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

Теперь, когда у нас есть несколько файлов в нашем репозитории, давайте посмотрим, как Git обращается с ними. Для того, чтобы проверить текущий статус репозитория, нужно воспользоваться командой git status :


Добавление файлов в Git для отслеживания

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

Добавляем файлы при помощи команды add :

Снова проверив состояние репозитория, мы увидим, что был добавлен один файл:


Для добавления нескольких файлов, можно использовать следующую запись команды (обратите внимание, что мы добавили еще один файл в целях демонстрации):

git add myfile2 myfile3

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

Если вы будете использовать команду add рекурсивно, она добавит все такие файлы, если они существуют в вашем репозитории.

Удаление файлов

Но выполнение простой команды git rm удалит файл не только из Git , но также и из вашей локальной файловой системы! Чтобы

Git прекратил отслеживать файл, но при этом в вашей локальной системе сохранился сам файл, выполните следующую команду:

git rm --cached

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

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

Вы можете привязывать к каждому коммиту сообщение, которое добавляется при помощи префикса -m :

git commit -m "My first commit"


Снабжайте коммиты полезными сообщениями, потому что это поможет вам определить, что вы изменили в этом коммите.

Избегайте слишком общих сообщений типа «Исправлены ошибки ». Если у вас есть трекер задач, вы можете добавлять сообщения в виде «Исправлена ошибка #234 ».

Хорошей практикой является использование имени ветки или имени функции в качестве префикса к сообщению коммита. Например, «Управление активами: добавлена функция для генерации PDF файлов активов » - это содержательное сообщение.

Git идентифицирует коммиты путем добавления длинного шестнадцатеричного числа к каждому коммиту. Как правило, не нужно копировать всю строку, для определения вашего коммита достаточно первых 5-6 символов.

Обратите внимание, что на скриншоте наш первый коммит определяется кодом 8dd76fc .

Дальнейшие коммиты

Теперь давайте изменим несколько файлов после нашего первого коммита. После их изменения, мы увидим, что в результате выполнения команды git status Git обнаружил изменения в файлах, которые он отслеживает:


Вы можете проверить изменения в отслеживаемых файлах, сделанные в последнем коммите, с помощью команды git diff . Если вы хотите просмотреть изменения в определенном файле, используйте команду git diff :


Вам нужно добавить эти файлы снова, чтобы осуществить изменения в отслеживаемых файлах для следующего коммита. Можно добавить все отслеживаемые файлы, выполнив команду:

Вы можете избежать использования этой команды, воспользовавшись префиксом -a для команды git commit , который добавит все изменения в отслеживаемые файлы.

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

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

После того, как вы разместили ваши файлы, можно приступить к коммиту. Я упоминал, что с каждым коммитом может быть ассоциировано сообщение, которое мы вводим с помощью префикса -m .

Однако существует возможность ввести сообщение в несколько строк, воспользовавшись командой git commit , которая открывает интерактивную форму для записи:


Управление проектом

Чтобы просмотреть историю вашего проекта, вы можете выполнить следующую команду:


Так будет показана вся история проекта, которая представляет собой список всех коммитов и информации по ним. Информация о коммите включает в себя хеш-код коммита, автора, время и сообщение коммита. Есть различные варианты git log , которые вы можете изучить, как только освоите понятие ветки (англ. branch) в Git .

Для того чтобы просмотреть подробную информацию об определенном коммите и файлах, которые были изменены, выполните следующую команду:

git show

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

Размещение кода в облаке

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

Поскольку Git не имеет центрального сервера как Subversion , вам нужно добавить каждый источник для взаимодействия с другими. Вот тут возникает понятие remote . remote означает удаленную версию вашего репозитория.

Если вы хотите разместить код в облаке, вы можете создать проект на GitHub , GitLab или BitBucket и поместить уже существующий код в репозиторий.