Skip to content

UsingGitOnWindows

Pavel Kryukov edited this page Apr 18, 2017 · 2 revisions

Введение

Для обращения к репозиторию необходимо настроить рабочую среду Git, позволяющую получать хранящиеся на сервере и публиковать свои локальные изменения. Ниже дана пошаговая инструкция для ОС Windows и консольной версии инструментов Git в связке с хостингом Google Code. Отметим, что для работы могут использованы и любые другие инструменты.

Получение и установка Git

  • Откройте ссылку http://git-scm.com/downloads и скачайте инсталлятор. Имя его должно быть похоже на git-1.8.4-preview.exe.

  • Установите набор приложений. Используйте настройки по умолчанию, если вы не знаете, что означают вопросы, задаваемые при инсталляции.

Настройка доступа к репозиторию

  • Получите права на запись в репозиторий проекта: http://code.google.com/p/mipt-ilab-course . При этом ваше имя должно появиться с списке участников с пометкой Committer или Contributor

  • Узнайте свой пароль к репозиториям. Google Code использует генерируемые пароли, они доступны с вашей страницы настроек. Он понадобится вам на следующем шаге.

Получение копии репозитория - клонирование

Краткая инструкция по получению репозитория приведена на вкладке Source - Checkout

Однако разберём её подробнее.

  • Найдите среди недавно установленных программ новую категорию Git. Откройте командную строку Git Bash. Эта командная строка представляет собой окружение, во многом аналогичное Linux версиям Bash.

  • Перейдите в домашнюю директорию, выполнив команду
cd $HOME
  • Создайте файл _netrc (первый символ - подчерк) в своей домашней директории и сохраните в нём свой пароль к репозиторию для того, чтобы не вводить его каждый раз при операции push, выполнив в коммандной строке следующие команды:
echo machine code.google.com login ваш@емейл password пароль >> _netrc
chown 600 _netrc

Не вносите файл _netrc в репозиторий

ВНИМАНИЕ! Ни при каких условиях не заносите свой файл _netrc в репозиторий. в нём содержится ваш пароль на запись в общий репозиторий. Если вы сделаете push, то он станет виден всем в Интернете! Любой сможет использовать его для того, чтобы вносить изменения от вашего имени. Т.к. Git сохраняет все ревизии, удалить его без уничтожения репозитория будет нельзя.

Если вы всё-таки сделали это, то перегенерируйте свой пароль в настройках Google Code https://code.google.com/hosting/settings , нажав кнопку Regenerate.

Примечание на Unix-системах данный файл должен иметь имя .netrc, начинающееся с точки. Далее мы будем использовать оба имени взаимозаменяемо.

  • Файл _netrc не должен быть в директории репозитория - он должен быть в вашей домашней директории. На Windows это C:\Users\ИмяПользователя. Только в этом случае он будет использоваться для авторизации.

  • Не забудьте подставить свой емейл адрес в качестве логина и свой пароль Google Code в качестве пароля!

  • Примечание для тех, кто работает из офиса Интел. Выставите правильные настройки для прокси-сервера, иначе вы не сможете передавать файлы по сети с помощтю Git. Для этого выполните команду:
$ git config  --global http.proxy <proxy:port>

Если вы работаете из сети МФТИ или другой сети, то пропустите этот шаг.

  • Наконец, для получения копии репозитория (клонирования удалённого репозитория) выполните команду
git clone https://code.google.com/p/mipt-ilab-course/
  • Не указывайте своё имя/емейл в командной строке! Это создаст некоторые проблемы с настройками в .netrc

Внесение изменений

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

Решения задач в своей папке надо заливать под именем, построенным как (номер задачи)-(название задачи), например 01-SolveSquare.cpp или 01-SolveSquare (если это папка с несколькими файлами). Это облегчит ментору поиск текущей проверяемой задачи.

Для примера: http://code.google.com/p/mipt-ilab-course/source/browse/#git%2Fstudents%2Fasamsonov

Ни в коем случае не надо трогать директорию .git, иначе можно сломать вашу копию репозитория.

  • Для того, чтобы при будущих коммитах было указано ваше имя и емейл, выполните следующие команды:
git config --global user.email "ваш@емейл"
git config --global user.name "ваше имя"

Публикация изменений

  • Процесс публикации изменений при работе с Git двустадийный
  1. Вы фиксируете изменения в своей локальной копии репозитория (находящейся в папке .git) - это commit
  2. Вы переносите локальные изменения в удалённый репозиторий - это push
  • В Git Bash зайдите в директорию проекта: cd mipt-ilab-course. Вы должны находиться внутри файловой структуры проекта почти всегда, когда выполняете какие-то команды git, чтобы программа знала, с каким именно репозиторием вы работаете.

  • Для коммита выполните команду

git commit -a -m 'Change description'

Внимание Флаг -a приказывает git коммитить все изменённые файлы, даже те, которые вы, возможно, не хотите. Для контроля над тем, что должно попасть в репозиторий, используйте команду git status. Более подробно она описана в GitStatus.

Здесь опция -a приказывает занести все локальные изменения в репозиторий, -m 'строка' указывает комментарий, описывающий изменения, который будет виден всем участникам после успешного пуша. Всегда давайте в комментарии полезное описание ваших действий!

  • Для пуша выполните команду

  • Для проверки, что ваши изменения достигли репозитория, проверьте, что новая версия появилась в веб-интерфейсе проекта: http://code.google.com/p/mipt-ilab-course/source/list. В примере ниже мой коммит получил краткий номер 7789a9e77f32:

Заметьте, что вместе с коммитом видно имя автора и описание изменения.

  • Поздравляю! Вы выполнили свой первый коммит в проекте!

Статьи, требующие написания

Дальнейшее чтение по работе с Git

  • GitRevisions
  • GitAddDelete
  • GitEmergencyRestore - что делать, если запороли репозиторий

Содержимое

Все страницы этой вики

Инфраструктура

Программирование

  • CommentStyle
  • CodeReview
  • Testing
  • CodeStyle
  • CompilersIDEs
  • WindowsCmd

Разное

Clone this wiki locally