Git

Git — распределенная система контроля версий.

Основные команды

Создание локального репозитория

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

  • git remote — просмотр списка настроенных удаленных репозиториев.
  • git remote add [shortname] [url] — добавить удаленный репозиторий и присвоить ему имя.
  • git remote rename [shortname] [new_shortname] — изменить короткое имя.
  • git fetch [shortname] — загрузка изменений из удаленного репозитория.
  • git push [remote-name] [branch-name] — выгрузка изменений в удаленный репозиторий.
  • git pull [remote-name] [branch-name] — загрузка изменений с заданной ветки репозитория.
  • git remote show [remote-name] — просмотр состояния удаленного репозитория.
  • git remote rm [shortname] — удалить удаленный репозиторий из списка.

Коммиты

  • git add список_файлов — добавить файлы в индекс ( поставить их под версионный контроль). Обычно делается перед коммитом.
  • git commit -m «Комментарий к коммиту» — сделать коммит файлов из индекса.
  • git commit -a -m «Комментарий к коммиту» — добавить измененные файлы в индекс и сделать коммит. Обратите внимание: коммиты делаются в локальную копию репозитория. Указанные команды НЕ загружают изменения на сервер. Для изменения удаленного репозитория используйте git push.

Отмена коммита или операции

  • git checkout – имя_файла — отмена изменений из измененного файла.
  • git reset имя_файла — удаление добавленного (но не закоммиченного) файла из индекса.
  • git commit –amend — команда для изменения коммита.

Работа в локальном репозитории

  • git status — определение состояния файлов.
  • git add список_файлов — добавить файлы в индекс ( поставить их под версионный контроль).
  • git diff — просмотр сделанных изменений.
  • git diff –staged — сравнение проиндексированных изменений с последним коммитом.
  • git rm имя_файла — удаление физически удаленного файла из индекса.
  • git rm –cached имя_файла — удаление файла из индекса ( из версионного контроля ) без физического удаления.

Просмотр истории

  • git log — выдает список коммитов, сделанных в репозитории.
  • git log -p — выдает список коммитов с просмотром изменений, сделанных в каждом коммите.
  • git log –stat — выдает список коммитов с просмотром краткой статистики изменений.
  • git log –pretty=… — выдает список коммитов, изменяя формат вывода.
  • git log –since=… — выдает список коммитов с ограничением по времени. Например, 2.weeks — коммиты за последние 2 недели.
  • git log -число — выдает указанное число коммитов.

Git и SVN

Двусторонняя интеграция Git с SVN поддерживается утилитой git-svn. Эта утилита позволяет использовать Git в качестве полноценного SVN-клиента.

Миграция с SVN

Сначала проведем подготовительную работу для корректного отображения пользователей в Git. Извлекаем из репозитория нужную ветку svn:

tau% svn svn://path_to_repo/trunk_name

для того, чтобы извлечь информацию о пользователях. В директории с локальной копией репозитория ~/test/svn выполняем команду

tau% svn log --quiet | grep -E "r[0-9]+ \| .+ \|" | cut -d'|' -f2 | sed 's/ //g' | sort | uniq

В результате мы получим список пользователей, делавших коммиты в SVN. На основе этого списка создаем файл users.txt, каждая строка которого имеет вид

имя_в_SVN = имя_пользователя <e-mail>

Выходим из svn-каталога:

tau% cd ..

Импортируем SVN-репозиторий в Git-репозиторий командой git-svn:

tau% git svn clone svn://path_to_repo/ --authors-file=users.txt --no-metadata -T trunk_name TestGitProject

Здесь

svn://path_to_repo/

— путь к репозиторию, trunk_name — имя основной ветки, которую мы выгружаем из репозитория. Ключ –authors-file с указанием ранее созданного файла с пользователями используется для автоматического преобразования имен пользователей в более читабельные. Ключ –no-metadata удаляет метки SVN.

Наведем дополнительные красивости. Если нужно, инструкция рекомендует перенести метки, чтобы они действительно были метками:

tau% cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/
tau% rm -Rf .git/refs/remotes/origin/tags

в нашем случае настройки репозитория меток не предполагают. Поэтому нам остается перенести данные из .git/refs/remotes/, а затем его удалить:

tau% cp -Rf .git/refs/remotes/* .git/refs/heads/
tau% rm -Rf .git/refs/remotes

Добавляем наш сервер Git в качестве удаленного репозитория и отправляем на него наши данные:

tau% git remote add origin https://tau.home.local/ladilova/TestProject.git
tau% git push origin --all

Работа с SVN через Git

В работе.

freebsd/git.txt · Последние изменения: 2016/02/16 20:31 — ladilova
Наверх
CC Attribution-Noncommercial-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0