A PHP Error was encountered

Severity: Warning

Message: mysql_real_escape_string(): Access denied for user 'root'@'localhost' (using password: NO)

Filename: mysql/mysql_driver.php

Line Number: 319

A PHP Error was encountered

Severity: Warning

Message: mysql_real_escape_string(): A link to the server could not be established

Filename: mysql/mysql_driver.php

Line Number: 319

10 советов и приемов для начинающих по использованию Git

10 советов и приемов для начинающих по использованию Git


Рубрика: Новости Linux
Метки:
Просмотров: 9671

Существует тенденция, благодаря которой новые технологии становятся катализатором внедрения в основное русло технологического развития конкретных парадигм разработок и лучших практических приемов. Назовем этот феномен "Can't Buy Me Love" ("Любовь не купить") в честь фильма 80-х годов, в котором один школьный умник для повышения собственной популярности нанимает понравившуюся ему девушку для того, чтобы она изображала его подружку. Возможно, что последним примером такого феномена является появление и использование Git - системы управления версиями, имеющей открытый код и существенно повышающей уровень формализации при управлении версиями исходного кода. Я в течение нескольких лет пользовался другими решениями, такими как системы контроля версий CVS и Subversion, но Git, как средство управления исходным кодом, более естественно вписался в мой технологический процесс.

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

1. Добавление файлов одновременно с выполнением операции commit

В Git вы должны сначала явно подтвердить ваш запрос на добавление в репозитарий новых файлов, версии которых будут в дальнейшем отслеживаться (tracked files), и только потом фиксировать (командой commit) последние изменения. Поэтому типичная последовательность команд при подтверждении изменений выглядит следующим образом:

%>git add . %>git commit -m "Latest commit message"

Сохраняем предыдущее состояние и с помощью флага -a выполняем одновременное добавление файлов и подтверждение изменения:

%>git commit -a -m "Latest commit message"

Однако в большинстве случаев вам не следует пользоваться таким сокращением. Далее в этой статье я приведу вам, по крайней мере один пример, показывающий, почему этого не следует делать (по-видимому, это совет 5 – прим.пер.).

2. Сохраняем команды вместе с Git - алиасами

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

[alias] st = status co = checkout cm = commit pom = push origin master

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

%>git config -l

3. Выборочная подготовка файлов к выполнению операции commit

Иногда вы можете работать с несколькими файлами одновременно, но при выполнении ближайшей операции commit хотите добавить в репозитарий только некоторые из них. Для того, чтобы это сделать, вы можете воспользоваться интерактивной операцией добавления. Например, предположим, я создал два новых файла, ShopController.php и ForumController.php, но хочу добавить и зафиксировать (с помощью команды commit) добавление только первого файла. Я могу запустить процедуру интерактивного добавления, указав параметр -i для команды git add:

%>git add -i

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

*** Commands *** 1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked

5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp

Выбрав вариант 4, вы можете интерактивно указать, какие файлы вы хотите добавить:

What now> 4 1: application/controllers/ForumController.php

2: application/controllers/ShopController.php Add untracked>>

4. Игнорирование файлов и директорий с помощью .gitignore

Самое первое, что мне следует сделать после инициализации нового Git репозитория, это - создать файл .gitignore. Файл .gitignore используется для того, чтобы отфильтровывать те файлы и каталоги, изменение которых вы не хотите отслеживать в Git репозитарии. Когда, например, работа ведется над новым проектом Zend Framework, я обычно не оправляю в репозитарий проектную документацию, изображения, предназначенные для показа на сайте, а также файл, имеющий имя notes.txt, подразумевается, что мой файл .gitignore выглядит следующим образом:

docs public/images notes.txt

5. Удаление из списка зафиксированных новых только что добавленных файлов

В процесс разработки вы можете забыть добавить в ваш файл .gitignore имена тех файлов, которые только что создали, но не хотите добавлять в ваш репозитарий. Вы можете с помощью команды rm удалить эти файлы из списка изменений, которые были уже зафиксированы (это действие называется unstaging или удаление файла из группы индексируемых файлов):

%>git rm --cached schema-notes.txt

После того, как эта команда будет выполнена, вы можете добавить эти файлы в ваш файл .gitignore и снова вернутся к выполнению операции commit.

6. Просмотр содержимого предыдущих версий зафиксированных файлов

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

%>git show HEAD^:application/controllers/AboutController.php

Символ "^" указывает количество предыдущих версий, на которое при просмотре файла надо вернуться назад (число шагов "отката" -прим.пер.). Таким образом, приведенный выше пример команды покажет предыдущую версию файла AboutController.php. Если вы хотите посмотреть на три версии назад, вы должны использовать три символа "^", например:

%>git show HEAD^^^:application/controllers/AboutController.php

В качестве альтернативы вы можете при указании ссылки на файл воспользоваться хэш значением операции commit. Например, если вы хотите просмотреть содержимое AboutConroller.php в том виде, как оно было перед пятью последними изменениями, вы можете выполнить команду git log и получить хеш значение, а затем использовать первые пять символов этого хеш значения для просмотра содержимого файла:

%>git show 23aa985:application/controllers/AboutController.php

7. Редактирование ваших последних зафиксированных сообщений в журнале

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

%>git commit --amend

Исполнение этой команды позволит вам загрузить в текстовый редактор самое последнее зафиксированное (с помощью команды commit) сообщение и вы сможете отредактировать сообщение и сохранить исправленный вариант.

8. Сохранение текущего состояния без фиксации изменений

Случайное прерывание вашего обычного процесса программирования является неизбежным и часто ставит вас в положение, когда вы не совсем готовы вносить в репозитарий изменения, а вам вдруг необходимо что-то исправить и зафиксировать, что не связанно с текущей работой. Вы можете сохранить ваши текущие изменения с помощью команды stash, это позволит вам вернуться к предыдущей точке фиксации, после чего вы можете сделать и зафиксировать (с помощью команды commit) другие изменения. Затем вы можете вернуться к сохраненному состоянию. Например, предположим, я работал на проектным документом README и вдруг обнаружил вопиющую орфографическую ошибку. Я могу сохранить мои текущие изменения следующим образом:

%>git stash save

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

%>git stash pop

9. Просмотр вашего репозитария

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

%>git instaweb --httpd apache2

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

10. Находим причину проблемы

Иногда кто-нибудь из команды (но не вы, конечно) может добавить в репозитарий не совсем отлаженный код и испортить ваш билд. Естественно, вы захотите, чтобы кто-то взял на себя вину за эту проблему, но кто внес ошибку? Используйте команду blame для того, чтобы это узнать:

%>git blame application/controllers/AboutController.php

23aa9852 (Jason Gilmore 2010-06-03 12:34:04 -0400 11) public function indexAction()

23aa9852 (Jason Gilmore 2010-06-03 12:34:04 -0400 12) { 0e9e9f49 (Jason Gilmore 2010-06-03 13:32:47 -0400 13)

echo "Missing semicolon" 23aa9852 (Jason Gilmore 2010-06-03 12:34:04 -0400 14) }