GIT Top Commands
Операции STATUS
Инициализация каталога как Git-репозитория
git init
Команда показывающая какие файлы в каком состоянии находятся
git status
Показать историю коммитов в текущей ветке / всех ветках
git log
git log --all
Операции BRANCH ветвления
Отобразить активные ветки / все активные и доступные ветки
git branch
git branch -a
Переключиться на другую ветку
git checkout <branch-name>
Создать новую ветку и переключиться на неё
git checkout -b <branch-name>
Проиндексировать все файлы в папке (для commit)
git add .
Удалить ветку из remote REPO
git push origin --delete develop
Отправка всех веток локального репозитория на удалённый репозиторий
git push <link.repo> --all
git push --force <branch-name>
Операции с COMMITs
Создать коммит с указанием имени
git commit -m "new commit"
Автоматическая индексация всех уже отслеживаемых файлов
git commit -a
git commit -am "new commit" (автоиндекс+имя)
Редактор названия коммитов по-умолчанию
git config --global core.editor "vim"
Изменить сообщение последнего коммита
git commit --amend
Забыть все последующие коммиты от указанного по <hash>
git reset --hard <hash>
Изменить дату текущего коммита
GIT_COMMITTER_DATE="Thu Jun 08 13:44:15 2023 +0300" git commit --amend
Операции с TAGs
Создать новый Tag
git tag -a v1.0 -m "feature01"
git tag --list
Отправить Tag на удалённый репозиторий
git push origin v1.0
Операции с ALIASes
Алиасы для графического формата команды git log:
Подключить алиас с ключом --all (отображение всех ветвей)
git config --global alias.log0 "log \
--graph \
--abbrev-commit \
--decorate \
--format=format:'\
%C(bold blue)%h%C(reset) - \
%C(bold green)(%ci)%C(reset) \
%C(white)%s%C(reset) \
%C(dim white)- %an%C(reset)\
%C(auto)%d%C(reset)' \
--all
Подключить алиас с ключом --branches (отображение локальных веток)
git config --global alias.log1 "log \
--graph \
--abbrev-commit \
--decorate \
--format=format:'\
%C(bold blue)%h%C(reset) - \
%C(bold green)(%ci)%C(reset) \
%C(white)%s%C(reset) \
%C(dim white)- %an%C(reset)\
%C(auto)%d%C(reset)' \
--branches"
Отключить алиас
git config --global --unset alias.log1
Операции с REPOs
Клонировать удалённый репозиторий (папка будет создана)
git clone <link.repo>
Клонировать удалённый репозиторий по branch+tag
git clone <link.repo> --branch '<tag-name>'
Скачать изменения без слияния (fetch)
Изменения сохраняются в FETCH_HEAD
git fetch origin develop
Посмотреть HASH скачанного коммита
git rev-parse FETCH_HEAD # полный hash
git log FETCH_HEAD -1 --oneline # краткий hash
git diff HEAD FETCH_HEAD # посмотреть изменения
Слить изменения
Способ 1: Через временную ветку
git branch temp-branch FETCH_HEAD # создать ветку
git merge temp-branch # смержить
git branch -d temp-branch # удалить ветку
Способ 2: Через HASH
git merge FETCH_HEAD # смержить напрямую
git merge <hash> # смержить по hash
git pull origin develop # fetch + merge одной командой
Примеры Операций с REPOs
Пример с Новым Repo
# Инициализация и Push-инг Commit-а в Новый Repo
git init
git config --global user.name "Yuriy"
git config --global user.email "xeonmp22@gmail.com"
git init --initial-branch=main
#git remote set-url origin git@gitlab.rebrainme.com:devops_users_repos/725/devops/07_cicd.dev.git
#git remote remove origin
git remote add origin git@gitlab.rebrainme.com:devops_users_repos/725/devops/07_cicd.dev.git
git add .
git commit -am "34: Logging 6/prom.grafana"
# При 1-ом Commit-е делаем --set-upstream
git push -u origin main
# Для последующих Commit-ов
git push --all
Пример с Рабочим Repo
# Очистка рабочего Repo от файлов Старых Commit-ов
cd $HOME/rebrainme/devops/07_cicd
git rm -rf roles/
cd ../07_cicd.dev
rm -rf .git
# Копирование новых файлов в рабочий Repo
cp -r .gitignore main.tf playbook.yml README.md roles/ ../07_cicd
cd ../07_cicd
git add .
git commit -am "34: Logging 6/prom.grafana"
git push --all