Участник:HihinRuslan/Памятка по работе с git/gear: различия между версиями

Материал из ALT Linux Wiki
(Пожалуйста, закончите создание статье прежде, чем включать её в категорию)
 
(не показано 39 промежуточных версий 5 участников)
Строка 1: Строка 1:
===Памятка по работе с git/gerar===
===Памятка по работе с git/gear===


Создана для личного применения. Т.к. я сборкой через git пользуюсь редко, буду вносить сюда всё, что нужно запомнить для работы с git/Gear.
Создана для личного применения. Т.к. я сборкой через git пользуюсь редко, буду вносить сюда всё, что нужно запомнить для работы с git/Gear.


== Термины и сокращения применяемой в памятке: ==
== Термины и сокращения применяемой в памятке: ==
ЛР = Локальный репозиторий — репозиторий на моём компе.
ЛР = Локальный репозиторий — репозиторий на моём компе.


УР = Удалённый репозиторий — личный репозиторий на git.altlinux.ru.
УР = Удалённый репозиторий — личный репозиторий на git.altlinux.ru.


СР = Системный репозиторий — репозиторий входящий в различные ветки системных репозиториев — Сизифа и различных бренчей.
СР = Системный репозиторий — репозиторий входящий в различные ветки
      системных репозиториев — Сизифа и различных бренчей.


ДР = другой репозиторий — удалённые репозитории друзих пользователей.
ДР = другой репозиторий — удалённые репозитории других пользователей.
 
ЧР = чужой репозиторий — все другие репозитории, не относящиеся к ALT Linux


ЧР = чужой репозиторий — все другие репозитории, не относящиеся к ALT Linux


=== Создать ЛР ===
=== Создать ЛР ===
mkdir имя_пакета; cd имя_пакета; git init
 
mkdir имя_пакета; cd имя_пакета; git init


=== Создать УР ===
=== Создать УР ===
ssh git.alt init-db имя_пакета
 
ssh git.alt init-db имя_пакета
ssh git.alt init-db public/имя_пакета
ssh git.alt init-db public/имя_пакета


=== Добавление файла README в ЛР ===
=== Добавление файла README в ЛР ===
touch README
touch README
git add README
git commit -m 'first commit'


git add README
=== Удаление файла README из ЛР ===


git commit -m 'first commit'
git rm README
git commit


=== Забросить ЛР в УР ===
=== Забросить ЛР в УР ===
git remote add origin git.alt:packages/test.git


git push origin master
git remote add origin git.alt:packages/test.git
git push origin master


Указание УР origin и бранча master в команде push необходимо только в первый раз для создания бранча master в УР. git remote add создаёт в конфиг-файле ЛР запись, подобную такой:  
Указание УР origin и бранча master в команде push необходимо только в первый раз для создания бранча master в УР. git remote add создаёт в конфиг-файле ЛР запись, подобную такой:  


<nowiki>[remote "origin"]</nowiki>
<nowiki>[remote "origin"]</nowiki>
 
url = ssh://git.alt/people/dottedmag/packages/test.git
url = ssh://git.alt/people/dottedmag/packages/test.git
fetch = +refs/heads/*:refs/remotes/origin/*
 
fetch = +refs/heads/*:refs/remotes/origin/*




И поэтому в дальнейшем  
И поэтому в дальнейшем  


git push
git push


будет отправлять в нужный УР все локальные ветки.  
будет отправлять в нужный УР все локальные ветки.


=== Удалить УР ===
=== Удалить УР ===
<nowiki>ssh git.alt rm-db <path to git repository></nowiki>
<nowiki>ssh git.alt rm-db <path to git repository></nowiki>


Например:
Например:


ssh git.alt rm-db public/имя_пакета
ssh git.alt rm-db public/имя_пакета


=== Копировать ДР в ур ===
ssh git.alt clone git.alt:/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>


===Источники:===
===Источники:===
Строка 61: Строка 181:
* [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 для начинающих]
[[Категория:FAQ]]
* [http://www.altlinux.org/SrpmToGitTry Как собрать пакет на git.alt, если есть srpm или tgz+spec]
* [http://www.altlinux.org/Git/gitnotes  git/gitnotes]

Текущая версия от 19:52, 13 ноября 2022

Памятка по работе с 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 git.alt:/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

Источники: