Git Волшебство

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

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

прочитайте введение, упомянутое выше.

Технический подробности о том, как работает git, используются только термины, общие для SCV, и список упомянутых команд ограничен.

2 Работа с локальным репозиторием Сила любых распределенных систем – в наличии каждого локального разработчика.

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

В Git есть несколько основных команд для выполнения работы на месте и много вспомогательных.



2.1 Основные команды
Базовые команды — это те, без которых невозможно обойтись в разработке.

2.1.1 git инициализация — создание репозитория Команда git init создает пустой репозиторий в каталоге формы.

.

git, где в дальнейшем будет храниться вся информация об истории коммитов, теги - при разработке проекта: mkdir каталог проекта каталог проекта компакт-диска git инициализация Еще один способ создать репозиторий — команда git clone, но об этом позже.

2.1.2 git добавить И мерзавец РМ — индексация изменений Следующее, что вам нужно знать, это команда git add. Он позволяет вносить изменения в индекс — временное хранилище — которое затем будет включено в коммит. Примеры использует: git add EDITEDFILE — индексация измененного файла или уведомление об создавая что-то новое.

git добавить.

— вносить все изменения в индекс, включая новые файлы.

Файл можно удалить из индекса и дерева проекта одновременно с помощью команды git rm: git rm FILE1 FILE2 — отдельные файлы git rm Documentation/\*.

txt — хороший пример удаления из документации git, Все txt файлы из папки удаляются сразу.

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

команда сброса git: git reset — сбросить весь индекс.

git reset — EDITEDFILE — удалить конкретный файл из индекса.

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

2.1.3 git-статус — статус проекта, измененные и не добавленные файлы, проиндексированные файлы Команду git status, пожалуй, можно считать наиболее часто используемой, наряду с команды фиксации и индексации.

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

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

В самом простом виде этого достаточно.

после типа индексации: git совершить коммит Если индекс не пуст, то на его основе будет сделан коммит, после чего пользователю будет предложено прокомментировать внесенные изменения, вызвав команду редактировать (например, в Ubuntu обычно называется простой текстовый редактор nano, я - emacs).

Сохраняем, и вуаля! Коммит готов.

Есть несколько ключей, которые упрощают работу с git commit: git commit -a — фиксирует, автоматически индексируя изменения в файлах проект. Новые файлы будут проиндексированы.

не будет ! Удаление тех же файлов будет учтено.

git commit -m «commit comment» — прокомментировать коммит прямо из командной строки вместо текстового редактора.

git commit FILENAME — проиндексирует и создаст коммит на основе изменений один файл.

2.1.5 git сброс — возврат к конкретному коммиту, откат изменений, «жесткий» или «мягкий» Помимо работы с индексом (см.

выше), git reset позволяет сбросить состояние проект перед любым коммитом в истории.

В git это действие может быть двух типов: типы: «мягкий» (мягкий сброс) и «жесткий» (жесткий сброс).

«Мягкий» (с переключателем «--soft») оставит ваш индекс и все дерево нетронутыми.

файлы и каталоги проекта вернутся к работе с указанным коммитом.

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

  1. git commit. — неправильный коммит;
  2. git reset --soft HEAD^ — перейти к работе над уже зафиксированным коммитом, сохранение всего состояния проекта и индексированных файлов
  3. редактировать НЕПРАВИЛЬНЫЙ ФАЙЛ
  4. редактировать ДРУГОЙ НЕПРАВИЛЬНЫЙ ФАЙЛ
  5. добавлять.

6.1. git commit -c ORIG_HEAD — вернуться к последнему коммиту, будет предложено отредактируйте его сообщение.

Если сообщение останется прежним, то достаточно изменить регистр ключа -c: 6.2. git commit -C ORIG_HEAD Обратите внимание на обозначение HEAD^, оно означает «обращение к предку».

последний коммит.» Синтаксис такой относительной адресации описан более подробно.

будет ниже, в разделе «Хеши, теги, относительная адресация».

Соответственно, HEAD — ссылка на последний коммит. Ссылка ORIG_HEAD после мягкого сброса указывает на исходный коммит. Естественно, вы можете вернуться к большей глубине коммитов, «Аппаратный» сброс (-hard переключатель) — это команда, которую следует использовать с осторожность.

Git reset --hard вернет дерево проекта и индекс в состояние соответствующий указанному коммиту, удаление изменений из последующих коммитов: git добавить.

git commit -m «обречен на смерть» git reset --hard HEAD~1 — никто больше никогда не увидит этот позорный коммит. git reset --hard HEAD~3 — точнее, три последних коммита.

Никто.

Никогда.

Если команда достигнет точки ветвления, фиксация не будет удалена.

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

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

совершить.

Git revert создает новый коммит, который отменяет изменения: git revert config-modify-tag — вернуть коммит, отмеченный тегом.

git revert 12abacd — отменить коммит, используя его хэш.

Для использования команды состояние проекта не должно отличаться от состояние, записанное последним коммитом.

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

Для этих целях используется команда git log. Простой пример использования, который предоставляет краткую справку по всем коммиты, затронувшие текущую активную ветку (о ветках и ветвлениях Более подробно вы можете узнать ниже, в разделе «Разветвления и слияния»): журнал git Получайте подробную информацию о каждом в виде патчей по файлам из коммитов.

вы можете добавить ключ -p (или -u): git журнал -p Статистика изменения файлов, например количество внесенных в них изменений.

строки, удаленные файлы вызываются ключом --stat: git журнал --stat Ключ отвечает за информацию о создании, переименовании и правах доступа к файлам.

--краткое содержание: git log --summary Для изучения истории отдельного файла достаточно указать в качестве параметра его имя (кстати, в моей старой версии git этот метод не работает, Обязательно добавьте «—» перед «README»): git log README или, если версия git не совсем актуальна: журнал git — README Далее будет представлена только более современная версия синтаксиса.

Может быть указать время, начиная с определенного момента («недели», «дни», «часы», «с» и так далее): git log --since="1 день 2 часа" README git log --since="2 часа" README git log --since="2hours" dir/ — изменения, затрагивающие отдельную папку.

Начать можно с тегов: git log v1… — все коммиты, начиная с тега v1. git log v1. README — все коммиты, включающие изменения в файле README, начиная с тег v1. git log v1.v2 README — все коммиты, включающие изменения в файле README, начиная с тег v1 и заканчивающийся тегом v2. Создание, отображение списка, присвоение тегов будут даны в соответствующем раздел ниже.

Интересные варианты формата вывода команды предоставляет ключ --pretty: git log --pretty=oneline — отобразит строку, состоящую из хеша для каждого коммита (здесь — уникальный идентификатор каждого коммита, подробнее ниже).

git log --pretty=short — краткая информация только о коммитах автор и комментарий git log --pretty=full/fuller — более полная информация о коммитах с указанием имени автор, комментарий, дата создания и коммит В принципе, вы можете определить формат вывода самостоятельно: git log --pretty=format:'ФОРМАТ' Определение формата можно найти в разделе журнала git в книге сообщества Git. или сертификат. Красивый график фиксации ASCII отображается с помощью клавиши --граф.

2.1.8 git diff — различия между деревьями проектов; совершает; состояние индекса и любой фиксации.

Своеобразным подмножеством команды git log можно считать команду git diff, определение изменений между объектами проекта: деревьями (файлами и каталог): git diff — покажет изменения, не внесенные в индекс.

git diff --cached — изменения, внесенные в индекс.

git diff HEAD — изменения в проекте по сравнению с последним коммитом git diff HEAD^ — предпоследний коммит Можно сравнить «головы» ветвей: git diff master.экспериментальный Ну или активная ветка с любым: git diff экспериментальный 2.1.9 мерзавец шоу - показать изменения, сделанные одним коммитом Вы можете просмотреть изменения, внесенные любым коммитом в истории, с помощью команды git. показывать: git показать COMMIT_TAG 2.1.10 мерзавец виноват И git аннотировать - вспомогательные команды, помогающие отслеживать изменения файлов При работе в команде часто возникает необходимость узнать, кто именно написал тот или иной код. Удобно использовать команду git Assessment, которая построчно выводит информацию о последний коммит, коснувшийся строки, имя автора и хэш коммита: мерзавец виноват README Вы также можете указать конкретные строки для отображения: git виноват -L 2,+3 README — выведет информацию в три строки, начиная со второй.

Команда git annotate работает аналогично, выводя как строки, так и информацию о коммиты, влияющие на них: git аннотировать README 2.1.11 git grep — поиск слов по проекту, статус проекта в прошлом git grep в целом просто дублирует функционал знаменитого Unix команды.

Однако он позволяет искать слова и их комбинации в прошлом проекта, что может быть очень полезно: git grep tst — поиск слова tst в проекте.

git grep -с tst — подсчитать количество упоминаний tst в проекте.

git grep tst v1 — поиск в старой версии проекта.

Команда позволяет использовать логические И и ИЛИ: git grep -e 'first' --and -e 'another' — найти строки, где также упоминается первый слово и второе.

git grep --all-match -e 'first' -e 'второй' — найти строки, где встречается хотя было бы одно из слов.



2.2 Ветвление
Операции ветвления и слияния — это сердце и душа git, и именно эти функции делают его таким удобная работа с системой.

2.2.1 git ветка - создание, перечисление и удаление ветвей Работа с ветками — очень простая процедура в git, все необходимые механизмы сосредоточены в одной команде: git Branch просто перечислит существующие ветки, отметив активную.

git Branch new-branch — создаст новую ветку new-branch. git Branch -d new-branch — удалит ветку, если она был затоплен (объединен) с разрешение возможных конфликтов в текущем.

git Branch -D new-branch — удалит ветку в любой случай.

git Branch -m new-name-branch — переименует ветку.

git Branch --contains v1.2 — покажет те ветки, чьи предки включают конкретный коммит. 2.2.2 git проверка - переключение между ветками, извлечение отдельных файлов из истории коммитов Команда git checkout позволяет переключаться между последними коммитами (если упрощенные) ветки: оформить заказ в другом филиале checkout -b some-other-new-branch — создаст ветку, в которой это произойдет переключение.

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

Переключатель -f позволяет игнорировать этот факт: проверка -f какая-то другая ветка В случае, когда изменения все же необходимо сохранить, используйте ключ -m. Тогда команда перед переключением попытается загрузить изменения в текущую ветку и после разрешить возможные конфликты, переключиться на новый: проверка -m какая-то другая ветка Вы можете вернуть файл (или просто вытащить его из предыдущего коммита) с помощью такой команды: git checkout somefile — вернуть файл в состояние последнего коммита git checkout HEAD~2 somefile — вернуть файл в состояние двух коммитов обратно в ветку.

2.2.3 git слияние — объединение ветвей (решение возможных конфликтов).

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

Естественно, имеется удобный интерфейс популярная операция: git merge new-feature — попытается объединить текущую ветку и ветку новой функции.

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

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

Например, произошел конфликт в файле TROUBLE, который можно увидеть в статусе git: git merge Experiment — произошла неудачная попытка слияния.

git status — посмотрите проблемные места.

редактировать ПРОБЛЕМА - решение проблем.

git добавить.

— индексируем наши изменения, тем самым снимая пометки.

git commit — зафиксировать слияние.

Вот и все, ничего сложного.

Если в процессе разрешения вы передумаете разрешать конфликт, просто введите: git reset --hard HEAD — это вернет обе ветки в исходное состояние.

Если фиксация слияния завершена, используйте команду: git сброс --hard ORIG_HEAD 2.2.4 git перебазировать — построение прямой линии коммитов Предположим, разработчик создал дополнительную ветку для разработки отдельного функции и сделал несколько коммитов.

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

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

Допустим, есть две ветки, master и Topic, в каждой из которых после ветки было довольно много коммитов.

Команда git rebase берет коммиты из тематической ветки и объединяет их с последним коммитом ветки.

владелец:

  1. git-rebase master theme — опция, которая явно указывает, что и куда применяемый.

  2. git-rebase master — текущий активный накладывается на мастер ветвь.

После использования команды история становится линейной.

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

После редактирования - разрешение конфликтов - файлы следует добавить в индекс с помощью команды git add и продолжить добавление следующего фиксирует с помощью команды git rebase --continue. Альтернативными выходами будут команды git rebase --skip (пропустить наложение фиксации и перейти к следующему) или git rebase --abort (отменяет команду и все внесенные изменения).

С ключом -i (--interactive) команда будет работать в интерактивном режиме.

режим.

Пользователю будет предоставлена возможность определить порядок входа.

изменения, автоматически будет вызван редактор для разрешения конфликтов и т.д. Дальше.

2.2.5 мерзавец вишневый выбор — применение изменений, внесенных отдельным коммитом, в дерево проекта Если у вас сложная история разработки с несколькими длинными ветками развития, может возникнуть необходимость применить изменения, внесенные отдельный коммит одной ветки в дерево другой (активной на данный момент).

git Cherry-Pick BUG_FIX_TAG — изменения, внесенные указанным коммитом, будут применяется к дереву, автоматически индексируется и становится фиксацией в активном ветвь.

git Cherry-Pick BUG_FIX_TAG -n — переключатель «-n» указывает на необходимость изменений просто примените к дереву проекта без индексации и создания фиксации.



2.3 Другие команды и необходимые возможности
Для удобства работы с git введено дополнительное понятие: тег.

Кроме Необходимость хешей и их применение будут объяснены далее; показан метод ссылайтесь на коммиты, используя относительную адресацию.

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

Объекты — это все: коммиты, файлы, теги, деревья.

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

Больше всего нас интересует тот факт, что хеши идентифицируют коммиты.

В этом В каком-то смысле хэш — это продвинутый аналог ревизий Subversion. Несколько примеров использование хешей в качестве метода адресации: git diff f292ef5d2b2f6312bc45ae49c2dc14588eef8da2 — найти разницу текущих состояние проекта и коммит по номеру.

Ну вы сами видите, что это такое.

git diff f292ef5 — то же самое, но оставляем только первые шесть символов.

Гит поймет о каком коммите идет речь, если нет другого коммита с таким же начало хеша.

git diff f292 — иногда достаточно четырех символов.

git log febc32.f292 — прочитать журнал от фиксации к фиксации.

Конечно, человеку не так удобно использовать хеши, как машине, поэтому они были были введены другие объекты - теги.

2.3.2 git-тег — теги как способ отметить уникальный коммит Тег — это объект, связанный с фиксацией; сохранение ссылки на сам коммит, имя автор, собственное имя и некоторые комментарии.

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

Кроме того, git предоставляет так называемые «легкие теги».

теги"), состоящие только из имени и ссылки на коммит. Обычно такие теги используется для упрощения навигации по дереву истории; создать их очень легко: git tag стабильный-1 — создать облегченный тег, связанный с последним совершить.

Если тег уже существует, то другой не будет создан.

git tag стабильный-2 f292ef5 — пометить конкретный коммит. git tag -d стабильный-2 — удалить тег.

git tag -l — список тегов.

git tag -f стабильная-1.1 — создать тег для последнего коммита, заменить существующий, если он уже существовал.

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

например git diff, git log и так далее: git diff стабильная-1.1.стабильная-1 Имеет смысл использовать обычные теги, чтобы прикрепить к коммиту какой-то вид коммита.

такую информацию, как номер версии и комментарий к ней.

Другими словами, если в в комментариях к коммиту пишешь «исправлен такой-то баг», затем в комментарии к тегу по имя «v1.0» будет что-то вроде «стабильная версия, готовая к использованию»: git tag -a стабильный — создать обычный тег для последнего коммита; будет вызван текстовый редактор для написания комментариев.

git tag -a стабильная -m «производственная версия» — создать обычный тег, сразу указав в в качестве аргумента-комментария.

Команды перечисления, удаления и перезаписи для обычных тегов ничем не отличаются от команды для «легких» тегов.

2.3.3 Относительная адресация Вместо ревизий и тегов вы можете положиться на еще одно имя коммита.

механизм - относительная адресация.

Например, вы можете напрямую связаться со своим предком.

последний коммит основной ветки: git diff мастер^ Если после «птицы» поставить цифру, можно обратиться к нескольким предкам.

слияние коммитов: git diff HEAD^2 — найти изменения по сравнению со вторым предком предыдущего посвятить себя мастеру.

HEAD здесь — указатель на последний коммит активной ветки.

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

нужно нырнуть: git diff master^^ — что внес «дедушка» текущего коммита.

git diff master~2 — то же самое.

Обозначения можно комбинировать, чтобы добраться до нужного коммита: git diff мастер~3^~2 git diff мастер~6 2.3.4 файл .

gitignore — объяснение git, какие файлы следует игнорировать Иногда в каталогах проекта есть файлы, которые вам постоянно не нужны.

см.

сводку статуса git. Например, вспомогательные текстовые файлы редакторы, временные файлы и прочий мусор.

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

(если ограничения должны быть только в определенных каталогах) файл .

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

определенный формат. Пример содержимого такого файла: > > > > > > > Начало файла #комментарий к файлу .

gitignore #игнорировать сам .

gitignore .

gitignore #все html-файлы.

*.

html #.

кроме некоторых !special.html #нет необходимости в объектах и архивах *.

[ао] > > > > > > > > Конец файла Существуют и другие способы указать, какие файлы игнорировать, о которых вы можете узнать из git help gitignore. 3 «Вместе мы сила», или основы работы с удаленным репозиторием Естественно, большинство проектов по-прежнему предполагают как минимум работу как минимум два разработчика, которым необходимо совместно использовать код. Дальше будет перечисляет команды, необходимые для совместной (возможно, удаленной) работы.



3.1 Ветви удаленного отслеживания
Новая концепция — удаленные филиалы.

Удаленные ветки соответствуют любым филиал (обычно главный) на удаленном сервере.

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



3.2 git-клон — создание копии (удалённого) репозитория
Для начала работы с центральным репозиторием необходимо создать копию оригинальный проект со всей своей историей локально: git clone /home/username/project myrepo — клонировать репозиторий с той же машины в каталог myrepo. git-клон ssh://user@somehost:порт/~пользователь/репозиторий - клонировать репозиторий, используя безопасный протокол ssh (для которого вам необходимо иметь ssh-аккаунт).

git-клон git://user@somehost:port/~user/repository/project.git/ - у git есть это и свой собственный протокол.



3.3 мерзавец принести И мерзавец тянуть — берем изменения из центрального репозитория (из удаленной ветки)
Чтобы синхронизировать текущую ветку с репозиторием, используйте git fetch и мерзавец тяни.

git fetch — получить изменения в удаленную ветку из репозитория по умолчанию, Основная отрасль; тот, который использовался для клонирования хранилище.

Изменения приведут к обновлению ветки удаленного отслеживания после Что нужно будет сделать, так это объединить локальную ветку с помощью команды git merge. git fetch /home/username/project — получить изменения из определенного хранилище.

Также можно использовать синонимы адресов, созданных удаленной командой git: git удаленно добавить имя пользователя-проекта /home/имя_пользователя/проект git fetch username-project — получить изменения по указанному адресу синоним.

Естественно, после оценки изменений, например, командой git diff, вам необходимо создайте коммит слияния с основным: git merge имя пользователя-проект/мастер Команда git pull немедленно извлекает изменения и объединяет их в активную ветку: git pull — извлечь из репозитория, для которого были созданы удаленные ветки по умолчанию.

git pull username-project — извлечь изменения из определенного репозитория.

Как правило, команда git pull используется сразу.



3.4 git push — внести изменения в удаленный репозиторий (удалённую ветку)
После работы в экспериментальной ветке, слияния с основной, вам необходимо обновить удаленный репозиторий (удаленную ветку).

Для этого Используется команда git push: git push — отправьте изменения в удаленную ветку, созданную клонирование по умолчанию.

git push ssh://yourserver.com/~you/proj.git мастер: экспериментальный — отправить изменения из основной ветки в экспериментальную ветку удаленного репозитория.

git push origin :experimental — удалить экспериментальную ветку в удаленном репозитории origin. git push origin master:master — в удаленную главную ветку исходного репозитория (синоним репозиторий по умолчанию) ветка локальной основной ветки.

4 дня В этом разделе несколько общих и незначительно меньше нестандартных ситуаций при работе с git.

4.1 Обычный рабочий процесс при работе с локальным репозиторием
Git невероятно прост в использовании не только как распределенная среда.

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

Давайте взглянем обычный цикл – начиная с создания репозитория – работа git-разработчика над свой личный проект:

  1. mkdir git-демо
  2. компакт-диск git-демо
  3. git инициализация
  4. git добавить.

  5. git commit -m "первоначальная фиксация"
  6. Новая функция ветки git
  7. новая функция git checkout
  8. git добавить.

  9. git commit -m «Готово с новой функцией»
  10. мастер проверки git
  11. Новая функция git diff HEAD
  12. git merge новая функция
  13. git ветка -d новая функция
  14. git log --since="1 день"
Разберем каждое из действий.

1-2 - просто создайте рабочий каталог проект. 3 - создать репозиторий в каталоге.

4 - проиндексировать все существующие файлы проекта (если они, конечно, вообще существовали).

5 - создать инициализирующий коммит 6 - новая ветка, 7 - переход на нее (можно сделать за один шаг команда git checkout -b новая функция).

Далее, после непосредственной работы с код, проиндексировать внесенные изменения (8), зафиксировать (9).

Переключить на основная ветка (10), посмотрите на различия между последним коммитом активной ветки и последний коммит был экспериментальным (11).

Осуществляем слияние (12) и, если не было конфликтов нет, удалите ветку (13), которая больше не нужна.

Ну, на всякий случай Давайте оценим проделанную работу за прошедший день (14).

Почему это так? Зачем отказываться от линейной модели? Хотя бы потому, что что у программиста есть дополнительная гибкость: он может переключаться между задачами (ветвями); под рукой всегда есть «чистильщик» — ветка владелец; коммиты становятся меньше и точнее.



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

Что больше всего общая общая модель работы для git?

  1. git-клон http://yourserver.com/~you/proj.git .

    возможно, прошло какое-то время.

  2. мерзавец тянуть
  3. git diff HEAD^
  4. git checkout -b плохая функция .

    мы работаем уже некоторое время.

  5. git commit -a -m «Создал плохую функцию»
  6. мастер проверки git
  7. мерзавец тянуть
  8. плохая функция git merge
  9. git совершить -a
  10. git diff HEAD^ .

    запускаем тесты проекта и обнаруживаем, что где-то произошла ошибка.

    Упс.

Теги: #git #разработка #рабочий процесс #git
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.