- 4
GIT для новичков: практическое использование
Рано или поздно разработчики приходят к тому, что появляется необходимость в использовании систем контроля версий. Как правило, на начальном этапе не все понимают принципы, по которым работают системы контроля версий, и у всех возникают однотипные вопросы.
Примечание: Ниже представлен список наиболее часто возникающих вопросов. Вы выбираете вопрос, ответ на который знаете, и пишете ответ. Не пишите ответ на несколько вопросов. Один вопрос — один ответ. Не копируйте ответы с других сайтов, если не позволяет лицензия. Проанализируйте и напишите ответ своими словами. Если вы видите неточность в ответе, напишите об этом в комментариях или исправьте сами, если позволяет репутация.
Установка и настройка
- Как установить git?
- Как создать новый проект или репозиторий?
- Как настроить git для игнорирования файлов, которые не должны отслеживаться?
Работа с кодом
- Что такое локальный и удалённый репозитории?
- Что такое коммит?
- Как клонировать репозиторий с сервера?
- Как сделать коммит?
- Как синхронизировать изменения с сервером?
- Как добавить файлы в систему контроля версий?
- Как отменить нежелательный коммит?
- Как просмотреть сделанные изменения?
- Как сравнить две версии одного файла или текущего состояния с предыдущей версией?
- Как посмотреть историю изменения файла или файлов?
- Как обрабатываются бинарные файлы?
- Как вы объединяете несколько изменений, сделанных с одним файлом, в одно время разными программистами?
Теги, ветки и релизы?
- Что такое теги и релизы?
- Как отметить ревизию тегои или релизом?
- Как произвести перемещение релиза?
- Как создать ветку?
- Как объединять ветки?
- Как объединять часть изменений одной ветки в другую ветку?
- Как заменить последовательность коммитов на другую?
Другое
- Описания и ссылки на хорошие графические оболочки, плагины для IDE, веб-интерфейсы и другие всевозможные вспомогательные программы.
- Какие-либо необходимые вопросы, которые пока не вошли в список.
- Ваши рецепты эффективной работы с системой контроля версий.
Если кто-то ответит на вопрос, то вопрос и ответ будут связаны ссылкой. Если ответа пока нет, то вопрос будет написан простым текстом.
Время от времени ссылки на ответы в данном вопросе будут обновляться, чтобы поддерживать информацию в актуальном состоянии. Поехали.
5 ответов:
-
- 1
Вики-ответКак создать новый проект или репозиторий?
GIT репозиторий из себя директорию в которой находятся субдиректория .git, в которой и хранится вся служебная информация.
Такая концепция и отличает распределённые системы контроля версий от централизованных (subversion), где репозиторий находится на удалённом сервере. Поэтому приходится делать svn checkout в директорию с рабочей копией из удалённого репозитория. В gitT же, ваша рабочая копия и является самим репозиторием.
Для создания репозитория необходимо перейти в директорию проекта, файлы которого вы хотите отслеживать, и ввести команду git init.
Например:
cd ~/github/cool_project/
git init
В директории cool_project создастся скрытая субдиректория .git
Чтобы создать новый проект, достаточно создать новую директорию и произвести инициализацию git репозитория.
Например:
cd ~/github/
mkdir my_second_project && cd my_second_project
git init
Для проверки созданного git репозитория нужно выполнить команду git status. Если репозиторий не был создан, то в ответ вы получите
fatal: Not a git repositoryЕсли вы захотите , чтобы проект больше не отслеживался системой контроля версий, то достаточно удалить .git директорию:
cd ~/github/my_second_project/
rm -r .git/
Внимание! Так вы удалите все теги, ветки, всю историю изменения файлов, все служебные файлы git, но останутся все файлы в последних редакциях!
-
- 0
Могу посоветовать хорошие ссылки:
Вот http://leonid.shevtsov.me/22-07-2009/perenos-svn-repozitariya-v-git/ и вот http://habrahabr.ru/blogs/development_tools/62557/
Вторая ссылка мне показалась более объёмной. И безумно полезной :)
-
- 0
Как настроить git для игнорирования файлов, которые не должны отслеживаться?
Существует несколько способов сделать так, чтобы git не отслеживал определённые файлы.
-
Игнорирование файлов для всех пользователей репозитория
Чтобы файлы игнорировались при добавлении в репозиторий у всех пользователей, то необходимо добавить в корень проекта файл .gitignore.
Отредактируйте файл .gitignore, добавив расширения для файлов, которые вы бы не хотели отслеживать.
Добавьте .gitignore в индекс для отслеживания и сделайте коммит.
git add .
git commit
-
Игнорирование файлов только в вашей копии репозитория
Добавьте или отредактируйте файл $GIT_DIR/info/excludeв своей рабочей копии, добавив или изменив шаблоны для игнорирования, и сохраните изменения. Например:
vim ~/github/cool_project/.git/info/exclude
-
Глобальное игнорирование во всех репозиториях в вашей системе.
Для этого вам необходимо создать файл с паттернами для игнорирования в своей домашней директории. Например: ~/.gitignore
Далее необходимо указать в своём ~/.gitconfig путь к созданному файлу.
Готово!core.excludesfile = ~/.gitignore
Файлы шаблонов для игнорирования юмеют очень простой синтаксис:
# Строки, начинающиеся с '#' считаются комментарием. # Игнорировать любой файл с именем foo.txt. foo.txt # Игнорировать html файлы, *.html *. html # Кроме foo.html который включается в индекс вручную. !foo.html ! foo.html # Игнорировать файлы с расширением *.a и *.o *.[oa] -
- 0
Как в локальном репозитории создать ветку от определённой удалённой ветки?
git branch local_branch_name origin/remote_branch_name git checkout local_branch_nameПосле такой не хитрой операции ваша локальная ветка loca_branch_name будет синхронизирована с удалённой веткой remote_branch_name.
-
- 0
Как опубликовать и удалить локальную ветку в удалённом репозитории?
Опубликовать или удалить локальную ветку в удалённом репозитории очень просто с помощью команды push, которая имеет в общем виде такой синтаксис:
git push нуд нлв:нув- нуд — название удалённого репозитория
- нлв — название локальной ветки
- нув — название удалённой ветки
Пример:
git push origin master:master — в удаленную ветку master репозитария origin ветки локальной ветки master.Удаление удалённой ветки:
git push origin :experimental — в удаленном репозитарии origin удалить ветку experimental.