Участник:HihinRuslan/Памятка по работе с git/gear
Материал из ALT Linux Wiki
(→Памятка по работе с git/gerar) |
(→Сбросить неудачный merge) |
||
(37 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | ===Памятка по работе с git/ | + | ===Памятка по работе с git/gear=== |
Создана для личного применения. Т.к. я сборкой через git пользуюсь редко, буду вносить сюда всё, что нужно запомнить для работы с git/Gear. | Создана для личного применения. Т.к. я сборкой через git пользуюсь редко, буду вносить сюда всё, что нужно запомнить для работы с git/Gear. | ||
- | Источники: | + | == Термины и сокращения применяемой в памятке: == |
+ | |||
+ | ЛР = Локальный репозиторий — репозиторий на моём компе. | ||
+ | |||
+ | УР = Удалённый репозиторий — личный репозиторий на git.altlinux.ru. | ||
+ | |||
+ | СР = Системный репозиторий — репозиторий входящий в различные ветки | ||
+ | системных репозиториев — Сизифа и различных бренчей. | ||
+ | |||
+ | ДР = другой репозиторий — удалённые репозитории других пользователей. | ||
+ | |||
+ | ЧР = чужой репозиторий — все другие репозитории, не относящиеся к ALT Linux | ||
+ | |||
+ | |||
+ | === Создать ЛР === | ||
+ | |||
+ | mkdir имя_пакета; cd имя_пакета; git init | ||
+ | |||
+ | === Создать УР === | ||
+ | |||
+ | ssh git.alt init-db имя_пакета | ||
+ | ssh git.alt init-db public/имя_пакета | ||
+ | |||
+ | === Добавление файла README в ЛР === | ||
+ | |||
+ | touch README | ||
+ | git add README | ||
+ | git commit -m 'first commit' | ||
+ | |||
+ | === Удаление файла README из ЛР === | ||
+ | |||
+ | git rm README | ||
+ | git commit | ||
+ | |||
+ | === Забросить ЛР в УР === | ||
+ | |||
+ | git remote add origin git.alt:packages/test.git | ||
+ | git push origin master | ||
+ | |||
+ | Указание УР origin и бранча master в команде push необходимо только в первый раз для создания бранча master в УР. git remote add создаёт в конфиг-файле ЛР запись, подобную такой: | ||
+ | |||
+ | <nowiki>[remote "origin"]</nowiki> | ||
+ | url = ssh://git.alt/people/dottedmag/packages/test.git | ||
+ | fetch = +refs/heads/*:refs/remotes/origin/* | ||
+ | |||
+ | |||
+ | И поэтому в дальнейшем | ||
+ | |||
+ | git push | ||
+ | |||
+ | будет отправлять в нужный УР все локальные ветки. | ||
+ | |||
+ | === Удалить УР === | ||
+ | <nowiki>ssh git.alt rm-db <path to git repository></nowiki> | ||
+ | |||
+ | Например: | ||
+ | |||
+ | ssh git.alt rm-db public/имя_пакета | ||
+ | |||
+ | === Копировать ДР в ур === | ||
+ | |||
+ | ssh git.alt clone /people/ИМЯ_ПОЛЬЗОВАТЕЛЯ/packages/ИМЯ_ПАКЕТА | ||
+ | |||
+ | === Копировать УР в ЛР === | ||
+ | |||
+ | git clone git.alt:packages/ИМЯ_ПАКЕТА | ||
+ | |||
+ | |||
+ | Для синхронизации веток УР с ЛР можно выполнить последовательно (или одной строкой через &&) команды: | ||
+ | |||
+ | git branch tmp | ||
+ | git checkout tmp | ||
+ | git fetch origin 'refs/heads/*:refs/heads/*' | ||
+ | git checkout master | ||
+ | git branch -d tmp | ||
+ | |||
+ | ''где tmp - это произвольная ветвь (назвать можно как угодно), которая должна отсутствовать в УР (иначе fetch завершится с ошибкой).'' | ||
+ | |||
+ | В результате в ЛР будут созданы локальные ветки (бранчи) аналогичные одноименным в УР и связанные с ними для последующих обменов изменениями (pull и push). | ||
+ | |||
+ | === Копировать ЧР в ЛР === | ||
+ | |||
+ | git clone url_чужого_репозитория | ||
+ | |||
+ | === Базовые операции c ЛР === | ||
+ | |||
+ | Добавление списка файлов в комит: | ||
+ | git add file1 file2 ... fileN | ||
+ | |||
+ | Добавление всех недобавленных файлов в комит: | ||
+ | git add -a | ||
+ | |||
+ | Удаление файла из комита и с жесткого диска: | ||
+ | git rm file1 file2 ... fileN | ||
+ | |||
+ | Комит в локальный репозиторий (надо отметить, что в таком случае закомитятся только файлы, которые были обработаны с помощью git add/rm): | ||
+ | git commit | ||
+ | |||
+ | Переписать последний комит в локальный репозиторий (добавить к последнему коммиту изменения не меняя историю): | ||
+ | git commit --amend | ||
+ | При работе с gear очень полезно при многократной пересборке пакета до публикации изменений в УР. | ||
+ | |||
+ | Комит всех изменений в локальный репозиторий: | ||
+ | git commit -a | ||
+ | |||
+ | Отмена всех изменений, сделанных в дереве, до состояния, которое было при последнем комите в локальный репозиторий( очень опасная команда, подумайте прежде чем пользоваться ею): | ||
+ | git reset --hard HEAD | ||
+ | |||
+ | |||
+ | Создание файла различий относительно последнего комита: | ||
+ | git diff | ||
+ | |||
+ | === Визуальный просмотр состояния ЛР === | ||
+ | |||
+ | * Устанавливаем пакет gitk (,или git-gui, или qgit) | ||
+ | |||
+ | apt-get install gitk | ||
+ | |||
+ | * Перееходим в каталог с ЛР | ||
+ | |||
+ | cd каталог_пректа | ||
+ | |||
+ | * Запускаем gitk (для просмотра истории всех ветвей gitk --all) | ||
+ | |||
+ | * Изучаем состояние репозитория | ||
+ | |||
+ | === Сборка пакета в Сизиф === | ||
+ | Создаём подписанный тэг: | ||
+ | |||
+ | $ gear-create-tag | ||
+ | запрос подписи | ||
+ | имя_тэга будет равно версии пакета | ||
+ | |||
+ | $ git push origin --follow-tags | ||
+ | записываем себе в ЛР | ||
+ | |||
+ | Отправляем пакет на сборку в Сизиф: | ||
+ | |||
+ | $ ssh git.alt build packages/ИМЯ_пакета.git имя_тега | ||
+ | |||
+ | имя_тэга равно версии пакета | ||
+ | |||
+ | === Импорт пакета из СР === | ||
+ | |||
+ | git clone http://git.altlinux.org/gears/h/hello.git | ||
+ | |||
+ | Удаляем из | ||
+ | <source lang=text> | ||
+ | [remote "origin"] | ||
+ | fetch = +refs/heads/*:refs/remotes/origin/* | ||
+ | Url = git://git.altlinux.org/gears/h/hello.git | ||
+ | </source> | ||
+ | |||
+ | git remote rm origin | ||
+ | |||
+ | Задаём свой ЛР | ||
+ | |||
+ | git remote add origin git.alt:packages/hello.git | ||
+ | |||
+ | |||
+ | === Сбросить неудачный merge === | ||
+ | |||
+ | (спасибо cas@) | ||
+ | <source lang=text> | ||
+ | git reset --hard HEAD | ||
+ | git clean -fd | ||
+ | </source> | ||
+ | |||
+ | Или: | ||
+ | (спасибо qa@) | ||
+ | <source lang=text> | ||
+ | git merge --abort | ||
+ | </source> | ||
+ | |||
+ | ===Источники:=== | ||
* [http://www.altlinux.org/Справочник_по_git.alt Справочник_по_git.alt] | * [http://www.altlinux.org/Справочник_по_git.alt Справочник_по_git.alt] | ||
* [http://www.altlinux.org/Git.alt/Краткое_руководство Краткое_руководство по git.alt] | * [http://www.altlinux.org/Git.alt/Краткое_руководство Краткое_руководство по git.alt] | ||
+ | * [http://blog.nsws.ru/rabota-s-git-dlya-nachinayushhix.html Работа с git для начинающих] | ||
+ | * [http://www.altlinux.org/SrpmToGitTry Как собрать пакет на git.alt, если есть srpm или tgz+spec] | ||
+ | * [http://www.altlinux.org/Git/gitnotes git/gitnotes] | ||
[[Категория:FAQ]] | [[Категория:FAQ]] |
Текущая версия на 13:46, 12 июня 2016
Памятка по работе с git/gear
Создана для личного применения. Т.к. я сборкой через git пользуюсь редко, буду вносить сюда всё, что нужно запомнить для работы с git/Gear.
Термины и сокращения применяемой в памятке:
ЛР = Локальный репозиторий — репозиторий на моём компе.
УР = Удалённый репозиторий — личный репозиторий на git.altlinux.ru.
СР = Системный репозиторий — репозиторий входящий в различные ветки системных репозиториев — Сизифа и различных бренчей.
ДР = другой репозиторий — удалённые репозитории других пользователей.
ЧР = чужой репозиторий — все другие репозитории, не относящиеся к ALT Linux
Создать ЛР
mkdir имя_пакета; cd имя_пакета; git init
Создать УР
ssh git.alt init-db имя_пакета ssh git.alt init-db public/имя_пакета
Добавление файла README в ЛР
touch README git add README git commit -m 'first commit'
Удаление файла README из ЛР
git rm README git commit
Забросить ЛР в УР
git remote add origin git.alt:packages/test.git git push origin master
Указание УР origin и бранча master в команде push необходимо только в первый раз для создания бранча master в УР. git remote add создаёт в конфиг-файле ЛР запись, подобную такой:
[remote "origin"] url = ssh://git.alt/people/dottedmag/packages/test.git fetch = +refs/heads/*:refs/remotes/origin/*
И поэтому в дальнейшем
git push
будет отправлять в нужный УР все локальные ветки.
Удалить УР
ssh git.alt rm-db <path to git repository>
Например:
ssh git.alt rm-db public/имя_пакета
Копировать ДР в ур
ssh git.alt clone /people/ИМЯ_ПОЛЬЗОВАТЕЛЯ/packages/ИМЯ_ПАКЕТА
Копировать УР в ЛР
git clone git.alt:packages/ИМЯ_ПАКЕТА
Для синхронизации веток УР с ЛР можно выполнить последовательно (или одной строкой через &&) команды:
git branch tmp git checkout tmp git fetch origin 'refs/heads/*:refs/heads/*' git checkout master git branch -d tmp
где tmp - это произвольная ветвь (назвать можно как угодно), которая должна отсутствовать в УР (иначе fetch завершится с ошибкой).
В результате в ЛР будут созданы локальные ветки (бранчи) аналогичные одноименным в УР и связанные с ними для последующих обменов изменениями (pull и push).
Копировать ЧР в ЛР
git clone url_чужого_репозитория
Базовые операции c ЛР
Добавление списка файлов в комит:
git add file1 file2 ... fileN
Добавление всех недобавленных файлов в комит: git add -a
Удаление файла из комита и с жесткого диска:
git rm file1 file2 ... fileN
Комит в локальный репозиторий (надо отметить, что в таком случае закомитятся только файлы, которые были обработаны с помощью git add/rm):
git commit
Переписать последний комит в локальный репозиторий (добавить к последнему коммиту изменения не меняя историю):
git commit --amend
При работе с gear очень полезно при многократной пересборке пакета до публикации изменений в УР.
Комит всех изменений в локальный репозиторий:
git commit -a
Отмена всех изменений, сделанных в дереве, до состояния, которое было при последнем комите в локальный репозиторий( очень опасная команда, подумайте прежде чем пользоваться ею):
git reset --hard HEAD
Создание файла различий относительно последнего комита:
git diff
Визуальный просмотр состояния ЛР
- Устанавливаем пакет gitk (,или git-gui, или qgit)
apt-get install gitk
- Перееходим в каталог с ЛР
cd каталог_пректа
- Запускаем gitk (для просмотра истории всех ветвей gitk --all)
- Изучаем состояние репозитория
Сборка пакета в Сизиф
Создаём подписанный тэг:
$ gear-create-tag запрос подписи имя_тэга будет равно версии пакета
$ git push origin --follow-tags записываем себе в ЛР
Отправляем пакет на сборку в Сизиф:
$ ssh git.alt build packages/ИМЯ_пакета.git имя_тега
имя_тэга равно версии пакета
Импорт пакета из СР
git clone http://git.altlinux.org/gears/h/hello.git
Удаляем из
[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* Url = git://git.altlinux.org/gears/h/hello.git
git remote rm origin
Задаём свой ЛР
git remote add origin git.alt:packages/hello.git
Сбросить неудачный merge
(спасибо cas@)
git reset --hard HEAD git clean -fd
Или: (спасибо qa@)
git merge --abort