From 826b56a9a32b7b9b9a7cac1a321a390f7a968c85 Mon Sep 17 00:00:00 2001 From: Tikhon Tarnavsky Date: Wed, 18 Aug 2010 14:39:19 +0300 Subject: [PATCH] ru/grandmaster.txt editing finished --- ru/grandmaster.txt | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/ru/grandmaster.txt b/ru/grandmaster.txt index 73228f2..a0e89b3 100644 --- a/ru/grandmaster.txt +++ b/ru/grandmaster.txt @@ -103,18 +103,16 @@ Git записывает каждый подсчитанный им хеш ко === Git как основа === -Дизайн Git, в истинном духе UNIX, может быть легко использован как низкоуровневый компонент других программ: GUI, веб-интерфейсов, альтернативных интерфейсов командной строки, инструментов управления патчами, импортирования, преобразования, и так далее. Многие команды Git на самом деле - скрипты, стоящие на плечах гигантов. Небольшой доработкой вы можете переделать Git на свой вкус. +Дизайн Git, в истинном духе UNIX, позволяет легко использовать его как низкоуровневый компонент других программ: графических и веб-интерфейсов; альтернативных интерфейсов командной строки; инструментов управления патчами; средств импорта или конвертации, и так далее. Многие команды Git на самом деле — скрипты, стоящие на плечах гигантов. Небольшой доработкой вы можете переделать Git на свой вкус. -Простейший трюк — использование алиасов Git для выполнения часто используемых команд: +Простейший трюк — использование алиасов Git для сокращения часто используемых команд: $ git config --global alias.co checkout $ git config --global --get-regexp alias # отображает текущие алиасы alias.co checkout $ git co foo # то-же, что и «git checkout foo» -Также можно выводить текущую ветку в приглашении командной строки или заголовке окна терминала. - -Запуск +Другой пример: можно выводить текущую ветку в приглашении командной строки или заголовке окна терминала. Запуск $ git symbolic-ref HEAD @@ -122,13 +120,13 @@ Git записывает каждый подсчитанный им хеш ко $ git symbolic-ref HEAD 2> /dev/null | cut -b 12- -Подкаталог +contrib+ это целая сокровищница инструментов, построенных на Git. Со временем некоторые из них могут становиться официальными командами. Под Debian и Ubuntu этот каталог находится в +/usr/share/doc/git-core/contrib+. +Подкаталог +contrib+ это целая сокровищница инструментов, построенных на Git. Со временем некоторые из них могут становиться официальными командами. В Debian и Ubuntu этот каталог находится в +/usr/share/doc/git-core/contrib+. -Еще один из популярных и часто используемых инструментов — workdir/git-new-workdir. Этот скрипт создает с помощью символических ссылок новый рабочий каталог, имеющий общую историю с оригинальным хранилищем: +Один популярный инструмент из этого каталога — +workdir/git-new-workdir+. Этот скрипт создает с помощью символических ссылок новый рабочий каталог, имеющий общую историю с оригинальным хранилищем: $ git-new-workdir существующее/хранилище новый/каталог -Новый каталог и файлы в ней можно воспринимать как клон, с той разницей, что два дерева автоматически остаются синхронизированными ввиду обще истории. Нет необходимости в *merge*, *push* и *pull*. +Новый каталог и файлы в ней можно воспринимать как клон, с той разницей, что два дерева автоматически остаются синхронизированными ввиду общей истории. Нет необходимости в merge, push и pull. === Рискованные трюки === @@ -139,27 +137,27 @@ Git записывает каждый подсчитанный им хеш ко $ git checkout -f HEAD^ -С другой стороны, если вы укажете checkot конкретные пути, проверки на безопасность не будет: указанные файлы молча перезаписшутся. Будьте осторожны при использовании checkout таким образом. +С другой стороны, если вы укажете checkot конкретные пути, проверки на безопасность не будет: указанные файлы молча перезапишутся. Будьте осторожны при таком использовании checkout. *Reset*: сброс также прерывается при наличии незакоммиченных изменений. Чтобы заставить его сработать, запустите $ git reset --hard 1b6d -*Branch*: Удаление ветки не выполняется, если должно привести к потере изменений. Для принудительного удаления введите +*Branch*: Удаление ветки прервётся, если оно привело бы к потере изменений. Для принудительного удаления введите $ git branch -D мертвая_ветка # вместо -d -Аналогично, попытка перезаписи ветки путем перемещения будет прервано если может привести к потере данных. Для принудительного перемещений ветки введите +Аналогично, попытка перезаписи ветки путем перемещения будет прервана, если может привести к потере данных. Для принудительного перемещений ветки введите $ git branch -M источник цель #вместо -m -В отличии от checkout и reset, эти две команды дают отсрочку в удалении данных. Изменения остаются в каталоге .git и могут быть возвращены восстановлениеем нужного хеша из .git/logs (смотрите выше раздел «Охота за «головами»). По умолчанию они будут храниться по крайней мере две недели. +В отличии от checkout и reset, эти две команды дают отсрочку в удалении данных. Изменения остаются в каталоге .git и могут быть возвращены восстановлением нужного хеша из .git/logs (смотрите выше раздел «Охота за „головами“»). По умолчанию они будут храниться по крайней мере две недели. -*Clean*: Некоторые команды не будут выполняться, если они могут повредить неотслеживаемые файлы. Если вы уверены, что все неотслеживаемые файлы и каталоги не нужны, то безжалостно удаляйте их командой +*Clean*: Некоторые команды могут не сработать из опасений повредить неотслеживаемые файлы. Если вы уверены, что все неотслеживаемые файлы и каталоги не нужны, то безжалостно удаляйте их командой $ git clean -f -d -В следующий раз эта досадная команда выполнится! +В следующий раз эта досадная команда сработает! === Предотвращаем плохие коммиты === @@ -179,10 +177,10 @@ Git записывает каждый подсчитанный им хеш ко Для этого руководства я в конце концов добавил следующее в начало хука *pre-commit*, чтобы защититься от своей рассеянности: if git ls-files -o | grep '\.txt$'; then - echo FAIL! Неотслеживаемые .txt файлы. + echo ПРЕРВАНО! Неотслеживаемые .txt файлы. exit 1 fi Несколько операций Git поддерживают хуки, смотрите *git help hooks*. Вы можете добавить хуки, которые будут сообщать о грамматических ошибках в описаниях коммитов, добавлять новые файлы, расставлять абзацные отступы, прибавлять запись к веб-странице, проигрывать звуки и так далее. -Мы использовали пример хука *post-update* раньше, при обсуждении использования Git через http; это заставило Git запускать этот скрипт при каждом перемещении «головы». Пример скрипта *post-update* обновлял несколько файлов, которые нужны Git для связи через не считающиеся с ним средства сообщения, вроде HTTP. +Мы использовали пример хука *post-update* раньше, при обсуждении использования Git через http; это заставило Git запускать этот скрипт при каждом перемещении «головы». Пример скрипта *post-update* обновляет несколько файлов, которые нужны Git для связи через не считающиеся с ним средства сообщения, такие как HTTP. -- 2.11.4.GIT