Переводы — 10 советов по использованию Git для новичков
Оригинал
Новые технологии направлены на ускорение продвижения некоторых парадигм и передовых методик в мэйнстрим. Назовем это феноменом "Can't Buy Me Love" ("Любовь нельзя купить") в честь фильма 80-ых, в котором ботаник становится очень популярным, заплатив девушке из группы поддержки, чтобы та выдавала себя за его подружку. Очевидно, последним примером является Git, система контроля версий с открытым исходным кодом, сильно повысившей авторитет формализованного управления исходным кодом. В течении нескольких лет я использовал и другие системы контроля версий, такие как CVS и Subversion. Но, благодаря Git, управление исходным кодом стало естественной частью моего рабочего процесса, почти развлечением.
Но, как и многие технологии, поверхностное изучение особенностей Git способствует адаптации. В тоже время, Git предоставляет так много возможностей, что это может подавить новичка. Когда я набрал достаточно опыта работы с системой, я написал список подсказок, которые помогают мне управлять проектами в Git. В этой статье я освещу те из них, которые, на мой взгляд, будут наиболее полезны для новичков.
1. Добавляйте файлы автоматически во время коммита.
Git требует явного добавления файлов (в индекс), изменённую версию которых нужно зафиксировать в следующем коммите. Поэтому типичной связкой команд при коммите будет что-то вроде:
Для начала сохраните файлы, затем добавьте и подтвердите их одновременно используя ключ -a:
%>git commit -a -m "Последние изменения"
Однако, во многих случаях, не следует прибегать к короткому пути. Позже я приведу вам пример, который продемонстрирует почему так делать не стоит.
2. Aliases в Git -- меньше телодвижений.
(прим.пер.: alias - псевдоним, сокращение)
Как и многие популярные консольные программы, Git позволяет вам сохранить настройки пользователя с помощью файла конфигураций .gitconfig. В этом файле обычно указываются имя и e-mail, так как это неотъемлемая часть обмена данных с вашим репозиторием, но вы можете указать в нем aliases для экономии времени. К примеру, мой .gitconfig содержит пару aliases к часто выполняемым командам:
Если вы забыли указанные вами aliases, просмотрите конфигурационный файл, используя следующую команду:
%>git config -l
3.Выборочная подготовка файлов
Иногда вы можете работать с несколькими файлами одновременно, но хотите добавить только некоторые из них во время предстоящего коммита. Для этого вы можете использовать функцию интерактивного добавления. Например, я создал два новых файла - ShopController.php и ForumController.php, но хочу применить изменения только к первому. Я могу воспользоваться интерактивным добавлением, используя git опцию -i:
%>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*
*примечание:
****Команды**** 1: статус 2: обновить 3:вернуть(отменить последние изменения) 4: добавить не отслеживаемые(файлы) 5: патч 6: разница 7: выход 8: помощь
При выборе 4, вы можете выбрать файлы для добавления:
What now> 4 1: application/controllers/ForumController.php
*What now - Что дальше?
2: application/controllers/ShopController.php Add untracked>>
Add untracked - добавить не отсеживаемые файлы.
4. Игнорирование файлов и директорий с помощью .gitignore
В первую очередь, после инициализации нового репозитория Git, я создаю файл .gitignore. Этот файл используется для фильтра любых файлов и директорий, которые не нужно отслеживать. Например, при работе над новым проектом Zend Framework, я обычно не включаю в репозиторий документацию проекта, изображения сайта и файлы notes.txt, и поэтому мой файл .gitignore выглядит так:
docs public/images notes.txt
5. Удаление недавно добавленных файлов из списка коммитов.
Торопясь в ходе разработки вы случайно забыли добавить в .gitignore только что созданный файл, который не хотите включать в репозиторий. Вы можете удалить эти файлы из списка изменений коммита (это называется "unstaging") используя команду rm:
%>git rm --cached schema-notes.txt
Когда файл удалён из индекса, вы можете добавить его в .gitignore и начать процесс коммита заново.
6. Просмотр содержимого ранее зафиксированных файлов
Мне часто требуется просмотреть содержимое ранней версии файла после внесения некоторых изменений в текущую версию, без непосредственного восстановления файла. Вы можете легко сделать это используя команду show, передав ей аргумент, указывающий на файл:
%>git show HEAD^:application/controllers/AboutController.php
Циркумфлекс (символ "^") означает число версий файла, которое вы хотели бы просмотреть. Команда покажет предыдущую версию файла AboutController.php. Если вы хотите заглянуть на 3 версии назад, вам нужно использовать 3 символа ^, вот так:
%>git show HEAD^^^:application/controllers/AboutController.php
Кроме того, вы можете использовать хэш коммита для указание на файл. Например, если вы хотите просмотреть содержимое версии файла AboutConroller.php, коммита 5 версий назад, вы можете вызвать git log, чтобы определить хэш коммита, а затем использовать первые 5 символов этого хэша (или весь хэш целиком, прим. пер.) для получения содержимого файла:
%>git show 23aa985:application/controllers/AboutController.php
7. Редактирование самого последнего сообщения коммита.
Я придирчив к орфографии, но, торопясь зафиксировать последние изменения, я случайно могу вставить пару лишних букв в сообщение. Вы легко можете отредактировать последнее сообщение используя команду amend ( правка- прим. пер.):
%>git commit --amend
Вызов этой команды загрузит самое последнее сообщение в текстовый редактор, позволяя вам отредактировать и сохранить его.
8. Временное сохранение незафиксированных изменений
Рано или поздно вам придется прервать работу, зачастую это происходит когда вы еще не готовы сделать коммит, тем не менее вам может срочно понадобиться исправить и зафиксировать ошибку, не относящуюся к текущей работе. Вы можете "спрятать" текущие изменения с помощью команды stash, тем самым возвращая свой код к предыдущему коммиту, это позволит внести и зафиксировать новые изменения. Когда закончите, вы сможете вернуться к "спрятанному" состоянию. Например, предположим, я работал над новой секцией к README-файлу проекта, и внезапно обнаружил вопиющую орфографическую ошибку. Я могу "спрятать" мои текущие изменения вот так:
%>git stash save
Открыв README заново, я бы увидел, что новая секция исчезла, потому что я вернулся к точке предыдущего коммита. Затем я исправил бы орфографическую ошибку и сделал бы коммит. Затем вызвал бы следующую команду, чтобы вернуться к исходному состоянию:
%>git stash pop
9. Просмотр вашего репозитория
Для Git-репозиториев доступно довольно много веб-интерфейсов, но знаете ли вы, что один из них, под названием instaweb, интегрирован в дистрибутив Git? Чтобы просмотреть ваш репозиторий в браузере, выполните следующую команду:
%>git instaweb --httpd apache2
Передача apache2 в качестве аргумента флагу --httpd сообщит Git'у, что на этой машине запущен веб-сервер Apache. По умолчанию используется lighthttpd, кроме того поддерживаются и некоторые другие сервера.
10. Ищем виновного
Случайно кто-то из команды (но ни в коем случае не вы, конечно же) внёс немного не проверенного кода в репозиторий и испортил вашу build(сборку). Естественно, вы захотите найти виновника проблемы, но кто внёс эту ошибку? Используйте команду blame для поиска виновного:
%>git blame application/controllers/AboutController.php
* Missing semicolon - пропущена "точка с запятой"
Упс! (вот беда: автор сам и допустил ошибку, прим. пер.)
Заключение
Воистину, Git - настоящий клад фантастических возможностей, делающих управление исходным кодом приятным занятием. Какие возможности Git'а, подсказки и трюки вы находите полезными? Расскажите нам о них в комментариях!
Об авторе
Jason Gilmore - основатель EasyPHPWebsites.com. Он так же автор нескольких популярных книг, включая "Easy PHP Websites with the Zend Framework", "Easy PayPal with PHP", и "Beginning PHP and MySQL, Third Edition".
Переведено инициативной группой переводчиков ZogG, Zereal, Dem0n3D с помощью сервиса translated.by, оригинал: 10 Git Tips and Tricks for Beginners
Новые технологии направлены на ускорение продвижения некоторых парадигм и передовых методик в мэйнстрим. Назовем это феноменом "Can't Buy Me Love" ("Любовь нельзя купить") в честь фильма 80-ых, в котором ботаник становится очень популярным, заплатив девушке из группы поддержки, чтобы та выдавала себя за его подружку. Очевидно, последним примером является Git, система контроля версий с открытым исходным кодом, сильно повысившей авторитет формализованного управления исходным кодом. В течении нескольких лет я использовал и другие системы контроля версий, такие как CVS и Subversion. Но, благодаря Git, управление исходным кодом стало естественной частью моего рабочего процесса, почти развлечением.
Но, как и многие технологии, поверхностное изучение особенностей Git способствует адаптации. В тоже время, Git предоставляет так много возможностей, что это может подавить новичка. Когда я набрал достаточно опыта работы с системой, я написал список подсказок, которые помогают мне управлять проектами в Git. В этой статье я освещу те из них, которые, на мой взгляд, будут наиболее полезны для новичков.
1. Добавляйте файлы автоматически во время коммита.
Git требует явного добавления файлов (в индекс), изменённую версию которых нужно зафиксировать в следующем коммите. Поэтому типичной связкой команд при коммите будет что-то вроде:
1 2 |
%>git add . |
Для начала сохраните файлы, затем добавьте и подтвердите их одновременно используя ключ -a:
%>git commit -a -m "Последние изменения"
Однако, во многих случаях, не следует прибегать к короткому пути. Позже я приведу вам пример, который продемонстрирует почему так делать не стоит.
2. Aliases в Git -- меньше телодвижений.
(прим.пер.: alias - псевдоним, сокращение)
Как и многие популярные консольные программы, Git позволяет вам сохранить настройки пользователя с помощью файла конфигураций .gitconfig. В этом файле обычно указываются имя и e-mail, так как это неотъемлемая часть обмена данных с вашим репозиторием, но вы можете указать в нем aliases для экономии времени. К примеру, мой .gitconfig содержит пару aliases к часто выполняемым командам:
1 2 3 4 5 |
[alias] |
Если вы забыли указанные вами aliases, просмотрите конфигурационный файл, используя следующую команду:
%>git config -l
3.Выборочная подготовка файлов
Иногда вы можете работать с несколькими файлами одновременно, но хотите добавить только некоторые из них во время предстоящего коммита. Для этого вы можете использовать функцию интерактивного добавления. Например, я создал два новых файла - ShopController.php и ForumController.php, но хочу применить изменения только к первому. Я могу воспользоваться интерактивным добавлением, используя git опцию -i:
%>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*
*примечание:
****Команды**** 1: статус 2: обновить 3:вернуть(отменить последние изменения) 4: добавить не отслеживаемые(файлы) 5: патч 6: разница 7: выход 8: помощь
При выборе 4, вы можете выбрать файлы для добавления:
What now> 4 1: application/controllers/ForumController.php
*What now - Что дальше?
2: application/controllers/ShopController.php Add untracked>>
Add untracked - добавить не отсеживаемые файлы.
4. Игнорирование файлов и директорий с помощью .gitignore
В первую очередь, после инициализации нового репозитория Git, я создаю файл .gitignore. Этот файл используется для фильтра любых файлов и директорий, которые не нужно отслеживать. Например, при работе над новым проектом Zend Framework, я обычно не включаю в репозиторий документацию проекта, изображения сайта и файлы notes.txt, и поэтому мой файл .gitignore выглядит так:
docs public/images notes.txt
5. Удаление недавно добавленных файлов из списка коммитов.
Торопясь в ходе разработки вы случайно забыли добавить в .gitignore только что созданный файл, который не хотите включать в репозиторий. Вы можете удалить эти файлы из списка изменений коммита (это называется "unstaging") используя команду rm:
%>git rm --cached schema-notes.txt
Когда файл удалён из индекса, вы можете добавить его в .gitignore и начать процесс коммита заново.
6. Просмотр содержимого ранее зафиксированных файлов
Мне часто требуется просмотреть содержимое ранней версии файла после внесения некоторых изменений в текущую версию, без непосредственного восстановления файла. Вы можете легко сделать это используя команду show, передав ей аргумент, указывающий на файл:
%>git show HEAD^:application/controllers/AboutController.php
Циркумфлекс (символ "^") означает число версий файла, которое вы хотели бы просмотреть. Команда покажет предыдущую версию файла AboutController.php. Если вы хотите заглянуть на 3 версии назад, вам нужно использовать 3 символа ^, вот так:
%>git show HEAD^^^:application/controllers/AboutController.php
Кроме того, вы можете использовать хэш коммита для указание на файл. Например, если вы хотите просмотреть содержимое версии файла AboutConroller.php, коммита 5 версий назад, вы можете вызвать git log, чтобы определить хэш коммита, а затем использовать первые 5 символов этого хэша (или весь хэш целиком, прим. пер.) для получения содержимого файла:
%>git show 23aa985:application/controllers/AboutController.php
7. Редактирование самого последнего сообщения коммита.
Я придирчив к орфографии, но, торопясь зафиксировать последние изменения, я случайно могу вставить пару лишних букв в сообщение. Вы легко можете отредактировать последнее сообщение используя команду amend ( правка- прим. пер.):
%>git commit --amend
Вызов этой команды загрузит самое последнее сообщение в текстовый редактор, позволяя вам отредактировать и сохранить его.
8. Временное сохранение незафиксированных изменений
Рано или поздно вам придется прервать работу, зачастую это происходит когда вы еще не готовы сделать коммит, тем не менее вам может срочно понадобиться исправить и зафиксировать ошибку, не относящуюся к текущей работе. Вы можете "спрятать" текущие изменения с помощью команды stash, тем самым возвращая свой код к предыдущему коммиту, это позволит внести и зафиксировать новые изменения. Когда закончите, вы сможете вернуться к "спрятанному" состоянию. Например, предположим, я работал над новой секцией к README-файлу проекта, и внезапно обнаружил вопиющую орфографическую ошибку. Я могу "спрятать" мои текущие изменения вот так:
%>git stash save
Открыв README заново, я бы увидел, что новая секция исчезла, потому что я вернулся к точке предыдущего коммита. Затем я исправил бы орфографическую ошибку и сделал бы коммит. Затем вызвал бы следующую команду, чтобы вернуться к исходному состоянию:
%>git stash pop
9. Просмотр вашего репозитория
Для Git-репозиториев доступно довольно много веб-интерфейсов, но знаете ли вы, что один из них, под названием instaweb, интегрирован в дистрибутив Git? Чтобы просмотреть ваш репозиторий в браузере, выполните следующую команду:
%>git instaweb --httpd apache2
Передача apache2 в качестве аргумента флагу --httpd сообщит Git'у, что на этой машине запущен веб-сервер Apache. По умолчанию используется lighthttpd, кроме того поддерживаются и некоторые другие сервера.
10. Ищем виновного
Случайно кто-то из команды (но ни в коем случае не вы, конечно же) внёс немного не проверенного кода в репозиторий и испортил вашу build(сборку). Естественно, вы захотите найти виновника проблемы, но кто внёс эту ошибку? Используйте команду blame для поиска виновного:
%>git blame application/controllers/AboutController.php
1 2 3 |
23aa9852 (Jason Gilmore 2010-06-03 12:34:04 -0400 11) public function indexAction() |
* Missing semicolon - пропущена "точка с запятой"
Упс! (вот беда: автор сам и допустил ошибку, прим. пер.)
Заключение
Воистину, Git - настоящий клад фантастических возможностей, делающих управление исходным кодом приятным занятием. Какие возможности Git'а, подсказки и трюки вы находите полезными? Расскажите нам о них в комментариях!
Об авторе
Jason Gilmore - основатель EasyPHPWebsites.com. Он так же автор нескольких популярных книг, включая "Easy PHP Websites with the Zend Framework", "Easy PayPal with PHP", и "Beginning PHP and MySQL, Third Edition".
Переведено инициативной группой переводчиков ZogG, Zereal, Dem0n3D с помощью сервиса translated.by, оригинал: 10 Git Tips and Tricks for Beginners