12 августа 2012 г.

Базовые операции в git


Если вы ещё не работали с git, то вам следует сначала ознакомиться с ключевыми особенностями этой системы.

Состояние хранилища

Итак, в предыдущей части мы установили и настроили локальный репозиторий git. Теперь давайте создадим в нём какой-нибудь текстовый файл, например, test.txt. В нём сохраним произвольный текст. А затем посмотрим в консоли текущее состояние хранилища:
git status

Добавление файла к git

Он нам покажет, что появился untracked файл, который ещё не добавлен в систему контроля версий. Давайте добавим его, чтобы для него учитывалась история изменений.
git add test.txt
Здесь мы добавили к версионированию определённый файл. Если же таких файлов будет очень много, можно добавить их все сразу, заменив название файла точкой.
git add .
Но используйте эту команду с осторожностью во избежания добавления нежелательных файлов!

Ещё раз посмотрим статус репозитория. Теперь git покажет, что файл был добавлен. Если подсветку в настройках вы подключили правильно, имена добавленных файлов отображаются зелёным цветом.

Фиксация изменений (commit)

Зафиксируем добавление файла test.txt в системе. Обязательно используйте опцию -m для указания пояснительного текста к изменению
git commit -m "file test.txt added"
Если же вы хотите добавить многострочный комментарий при помощи текстового редактора, то можете выполнить просто git commit без параметров. В этом случае откроется текстовый редактор (например, vi или vim) и вы сможете ввести многострочный комментарий. После этого сохраните получивший файл.

В vi(m) сохранение файла производится в режиме ввода команд. Если у вас другой режим, нажмите Esc. Затем введите три символа: двоеточие, w и q. Это означает write (записать файл на диск) и quit (выйти из программы).

Просмотр истории изменений

Теперь это сообщение можно увидеть в истории изменений:
git log
Изменим содержимое нашего файла test.txt. Его статус изменится на modified. Выполним второй коммит, чтобы зафиксировать это изменение. Обратите внимание, что второй раз команду git add выполнять не нужно.

Удаление файла из git

Теперь удалим наш файл test.txt.
git rm test.txt
Смотрим статус - файл удалён. Фиксируем изменение. Обратите внимание, что, если файл уже был добавлен к git, его нельзя удалять стандартной командой rm, а надо делать это средствами git.

Постраничный просмотр истории изменений

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

Также можно использовать более компактный вариант лога:
git log --pretty=oneline
В общем-то, этих операций достаточно, чтобы обеспечить базовое версионирование на отдельно взятой рабочей станции.

Работа с ветками (branches)

Git позволяет вести разработку независимых компонентов системы в отдельных ветках. Ветки могут быть как удалённые (remote), которые хранятся на сервере и доступны всем, так и локальными (local), которые хранятся на вашей рабочей машине и доступны только вам. Просмотреть все доступные ветки можно при помощи следующей команды:
git branch -a
Здесь будут отображены как локальные, так и серверные ветки. Активная, т.е. та, в которой вы находитесь сейчас, будет отмечена звёздочкой.

Просмотр только тех веток, которые доступны на сервере и видны всем:
git branch -r
Переключиться на другую ветку:
git checkout имя_ветки
Предположим, что вы начали работу над какой-то конкретной задачей, которая напрямую никак не связана с другими задачами. В таком случае рекомендуется создать отдельную ветку для добавления этого функционала.

Создать новую ветку и сразу перейти в неё:
git checkout -b имя_новой_ветки
Если же вам нужно перейти в ветку, которая есть на сервере, но локально с ней вы ещё ни разу не работали, дополните предыдущую команду, указав имя ветки на сервере:
git checkout -b локальное_имя_ветки origin/имя_ветки_на_сервере

Работа с удалённым репозиторием

Если у вас есть сервер, на котором организован общий репозиторий, вы можете отправить туда сделанные вами изменения. К этому моменту изменения уже должны быть оформлены в виде коммита.

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

Общий вид команды для получения изменений с сервера:
git pull origin имя_локальной_ветки:имя_ветки_на_сервере
Можно также использовать сокращённый вариант:
git pull
После того, как вы убедитесь, что новых изменений не было (или что они были успешно синхронизированы с вашей версией), отправьте ваши изменения на сервер.

Общий вид команды для отправки изменений на сервер:
git push origin имя_локальной_ветки:имя_ветки_на_сервере
Можно также использовать сокращённый вариант:
git push

Комментариев нет:

Отправить комментарий