Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
develop:git [2022/11/22 07:49] admin |
develop:git [2024/09/06 10:50] (текущий) admin |
||
---|---|---|---|
Строка 4: | Строка 4: | ||
===== Общее ===== | ===== Общее ===== | ||
+ | < | ||
+ | < | ||
**Git** как таковой opensource-софт, | **Git** как таковой opensource-софт, | ||
**master** главная ветка по умолчанию, | **master** главная ветка по умолчанию, | ||
- | <code bash> | + | :!: Авторизация\\ |
- | # Установка | + | Непонятная |
- | apt git install | + | |
+ | Постоянная конфигурация хранится в файле " | ||
+ | Для хранения токенов можно использовать: | ||
+ | * windows - командой "**git config --global credential.helper manager-core**" | ||
+ | * linux - "**git config --global credential.helper store**" | ||
+ | Минус в том что хранится в открытом виде, есть варианты **store/ | ||
+ | |||
+ | # Установка\\ | ||
+ | apt git install\\ | ||
+ | </ | ||
+ | |||
+ | |||
+ | <code bash> | ||
# Инициализация проекта | # Инициализация проекта | ||
cd /' | cd /' | ||
- | # Добавление файлов к проекту | + | # Добавить удаленный репозиторий |
- | git add . (file1 file2 ...) | + | git remote add < |
+ | # например | ||
+ | git remote | ||
- | # Фиксация изменений (-m коммент, | + | |
+ | # Отправка проекта | ||
+ | # Добавление файлов к проекту | ||
+ | git add . (file1 file2 ...) | ||
+ | | ||
git commit -m "Text comment" | git commit -m "Text comment" | ||
+ | # Отправка на удаленный репозиторий | ||
+ | git push < | ||
- | # Добавить удаленный репозиторий | + | |
- | git remote add < | + | git pull [origin] |
+ | git checkout [master] | ||
- | # Отправка на удаленный репозиторий | + | |
- | git push < | + | ssh -T git@github.com |
+ | ssh -vT git@github.com | ||
+ | |||
+ | # Авторизация | ||
+ | После создания пары ключей SSH вам необходимо добавить открытый ключ | ||
+ | В параметрах уч записи в ГХ, добавляем SSH-ключ, | ||
+ | После этого, проверяем авторизацию командой "ssh -T git@github.com" | ||
</ | </ | ||
- | |||
- | :!: Авторизация\\ | ||
- | Непонятная ситуация с авторизацией, | ||
- | |||
- | Постоянная конфигурация хранится в файле " | ||
- | Для хранения токенов можно использовать: | ||
- | * windows - командой "**git config --global credential.helper manager-core**" | ||
- | * linux - "**git config --global credential.helper store**" | ||
- | Минус в том что хранится в открытом виде, есть варианты **store/ | ||
Строка 44: | Строка 63: | ||
git remote [-v] | git remote [-v] | ||
- | git remote add < | + | git remote add < |
git remote remove/ | git remote remove/ | ||
Строка 50: | Строка 69: | ||
git remote show < | git remote show < | ||
+ | # Отправить изменения | ||
git push < | git push < | ||
- | # | + | # |
+ | git pull < | ||
git fetch < | git fetch < | ||
</ | </ | ||
</ | </ | ||
- | |||
Строка 68: | Строка 88: | ||
**Rebase** в целом тоже самое что и слияние, | **Rebase** в целом тоже самое что и слияние, | ||
[[https:// | [[https:// | ||
- | |||
<code bash> | <code bash> | ||
git branch [-v] | git branch [-v] | ||
- | |||
# Слитые [не слитые] ветки | # Слитые [не слитые] ветки | ||
git branch --merged [--no-merged] [name] | git branch --merged [--no-merged] [name] | ||
- | + | # Удалить (удалится только слитая ветка, -D для удаления не слитых) | |
- | # Удалить (удалится только слитая ветка) | + | |
git branch -d < | git branch -d < | ||
- | |||
git branch --all | git branch --all | ||
Строка 85: | Строка 101: | ||
git checkout < | git checkout < | ||
git checkout -b < | git checkout -b < | ||
- | |||
# История коммитов | # История коммитов | ||
git log <имя ветки> | git log <имя ветки> | ||
Строка 91: | Строка 106: | ||
</ | </ | ||
</ | </ | ||
- | |||
Строка 106: | Строка 120: | ||
# Разница между текущим состоянием и указанным коммитом | # Разница между текущим состоянием и указанным коммитом | ||
git diff < | git diff < | ||
+ | |||
+ | # Работа с тегами | ||
+ | git push --delete origin refs/ | ||
+ | git push --delete origin refs/ | ||
+ | git tag -d < | ||
</ | </ | ||
- | </ | ||
+ | |||
+ | Коммит это слепок, | ||
+ | Каждый коммит содержит **ссылку на предыдущий** так формируется цепочка.\\ | ||
+ | **Ветка** это ничто иное как **условный указатель** на последний коммит, | ||
+ | {{ : | ||
+ | |||
+ | **HEAD** это указатель на текущую, | ||
+ | | {{ : | ||
+ | |||
+ | При переходе между ветками, | ||
+ | </ | ||
< | < | ||
- | < | + | < |
+ | **.gitignore**\\ | ||
+ | В файле просто перечисляются файлы/ | ||
+ | Ошибка "git submodule update failed with ' | ||
<code bash> | <code bash> | ||
+ | git config --global --add safe.directory ' | ||
+ | |||
+ | либо в конфиге | ||
+ | [safe] | ||
+ | directory = * | ||
</ | </ | ||
</ | </ | ||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | # Теги (полный путь для тегов, который не пересекается с ветками- : | ||
+ | git push origin :tagname | ||
+ | git push --delete origin tagname | ||
+ | git tag --delete tagname // удалить локальный тег | ||
+ | # создание тега | ||
+ | ./ | ||
+ | # запушить вроде так долджно быть | ||
+ | ./ | ||
+ | # Удаление тегов | ||
+ | ./ | ||
- | Коммит это слепок, содержит **blob (большой бинарный) объект**, | + | # Удалить удаленную |
- | Каждый коммит содержит **ссылку на предыдущий** так формируется цепочка.\\ | + | git push origin --delete 1854_norm |
- | **Ветка** это ничто иное как **условный указатель** на последний коммит, | + | ./ |
- | {{ : | + | # Удалить локальную ветку |
+ | git branch --delete -D 1854_norm | ||
+ | ./ | ||
- | **HEAD** это указатель на текущую, | ||
- | | {{ : | ||
- | При переходе между ветками, **заменяется все содержимое | + | # Генерирует |
+ | # В данном случае для мозговой сборки, вида " | ||
+ | git describe | ||
+ | # Можно задать шаблон для отбора имеющихся тегов, здесь берет мгашный тег, на выходе: " | ||
+ | git describe " | ||
+ | # Эта команда фильтрует по маске и возвращает перечень имеющихся тегов | ||
+ | git ls-remote --quiet --tags --refs --sort=-version: | ||
+ | |||
+ | git ls-remote --quiet --tags --refs --sort=-version: | ||
+ | git ls-remote --quiet --tags --refs | grep -oP ' | ||
+ | // автосгенерированный либо релизный тег | ||
+ | git describe --match=[0-9]* --abbrev=8 | tr -s ' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | [[https:// | ||
+ | |||
+ | :!: SCM (Source Control Management) | ||
+ | |||
+ | Один из вариантов в проекте ГХ создаем вебхук, | ||
+ | Затем в джобе дженкинса, | ||
+ | |||
+ | |||
+ | В тоже время есть и другие варианты "Build Trigger", | ||
+ | Так, чтобы работать из репы, нужно код пайплайна разместить там и выбрать " | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | Работает в т.ч. и как актуализация уже существующего экспорта в GH\\ | ||
+ | [[https:// | ||
+ | [[https:// | ||
+ | |||
+ | <code bash> | ||
+ | # from gitLab | ||
+ | git clone --mirror git@your-gitlab-site.com: | ||
+ | |||
+ | cd repo | ||
+ | # to gitHub | ||
+ | git push --no-verify --mirror git@github.com: | ||
+ | </ | ||
+ | </ | ||
Строка 141: | Строка 236: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | |||
+ | |||
Строка 231: | Строка 329: | ||
$ git merge --allow-unrelated-histories | $ git merge --allow-unrelated-histories | ||
</ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Применение ===== | ||
+ | < | ||
+ | < | ||
+ | **Сборка с незасабмиченным топиком из геррита**\\ | ||
+ | Переходим в начальную ветку, например мастер, | ||
+ | Находим последний коммит, | ||
+ | Если есть коммиты из другой репы, аналогично, | ||
+ | Создаем ветку, пушим ее\\ | ||
Строка 236: | Строка 345: | ||
+ | < | ||
+ | < | ||
+ | Точнее включение одного репозитория в другой, | ||
+ | <code bash> | ||
+ | # Клонируем тот репозиторий, | ||
+ | git clone https:// | ||
+ | cd first-repo | ||
+ | git remote rm origin # На всякий случай отвязываем репозиторий | ||
+ | |||
+ | # Подготавливаем репозиторий: | ||
+ | mkdir first_repo | ||
+ | git mv $(ls -A | grep -v first_repo | grep -v .git) first_repo/ | ||
+ | git commit -m " | ||
+ | |||
+ | # Клонируем рядом целевой репозиторий | ||
+ | cd .. | ||
+ | git clone https:// | ||
+ | cd main_repo/ | ||
+ | |||
+ | # Подключаем к нему подготовленный первый репозиторий и вытаскиваем его master в отдельную ветку first-repo | ||
+ | git remote add first-repo ../ | ||
+ | git fetch first-repo | ||
+ | git branch first-repo remotes/ | ||
+ | |||
+ | # Мержим ветку в локальный master | ||
+ | git merge first-repo --allow-unrelated-histories | ||
+ | git remote rm first-repo | ||
+ | |||
+ | # Проверяем и пушим | ||
+ | git log | ||
+ | git push | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | <code bash> | ||
+ | git remote -v | ||
+ | # View existing remotes | ||
+ | # origin | ||
+ | # origin | ||
+ | |||
+ | git remote set-url origin https:// | ||
+ | # Change the ' | ||
+ | |||
+ | git remote -v | ||
+ | # Verify new remote URL | ||
+ | # origin | ||
+ | # origin | ||
+ | </ | ||
+ | </ | ||
===== ===== | ===== ===== |