```sh #========================================== # Полный список подкоманд: git help --all # Установка редактора по умолчанию: export GIT_EDITOR=vim # Настройка автора фиксации: git config --global user.name "my_name" git config --global user.email "my_name@mail.com" -add # добавляет файлы в индекс -bisect # выполняет бинарный поиск ошибки по истории фиксаций -branch # выводит, создает, или удаляет ветки -checkout # проверяет и переключает на ветку -clone # клонирует репозиторий в новый каталог -commit # записывает изменения в каталог (фиксация) -diff # показывает изменения между фиксациями, рабочими деревьями... -fetch # загружает объекты и ссылки из другого репозитория -grep # выводит строки, соответствующие шаблону -init # создает пустой репозиторий git, или переинициализирует существующий -log # показывает журналы фиксации -merge # объединяет две, или больше истории разработки -mv # перемещает, или переименовывает файл, каталог, или символическую ссылку -pull # получает изменения из удаленного репозитория и объединяет их с локальным, или локальной веткой -push # загружет изменения из локального репозитория в удаленный -rebase # строит ровную линию фиксаций -reset # сбрасывает текущий HEAD в указанное состояние -rm # удаляет файлы из рабочего дерева и из индекса -show # показывает различные типы объектов -status # показывает состояние рабочего дерева -tag # создает, выводит, удаляет, или проверяет тег объекта, подписанного с GPG #========================================== # Создание веток: git branch name_branch [начальная фиксация] # Вывод имен веток в репозитории: git branch -r # удаленные ветки -a # все ветки # Вывод детальной информации: git show-branch # Переключение на другую ветку: git checkout name_branch # Объединение изменений в другую ветку: git checkout -m dev # Создание новой ветки и переключение на нее: git checkout -b dev_new #========================================== # Использование UNIX команды diff: diff -u cat-1 cat-2 # Разница между рабочим каталогом и индексом: git diff # Разница между рабочим каталогом и указанной фиксацией: git diff фиксация # Разница между подготовленными в индексе изиенениями и заданной фиксацией: git diff --cached фиксация #========================================== # Исследование конфликтов слияния: git merge alt # Когда есть кофликты, рабочая копия каждого проблемного файла добавляется маркерами слияния - маркеры показывают две возможные версии конфликтного участка файла: нужно просто выбрать одну из фраз, удалить маркеры конфликта и выполнить команды: git add git commit # Отмена, или перезапуск слияния: # Перед последним git commit: # команда восстановит рабочий каталог и индекс в состояние предшествующее git merge: git reset --hard HEAD # После завершения слияния (уже есть новая фиксация): git reset --hard ORIG_HEAD # перед началом слияния GIT созраняет оригинальную ветку HEAD в ссылке ORIG_HEAD, чтобы можно было выполнить откат слияния # Вернуться к исходному состоянию конфликта, чтобы разрешить его снова: git checkout -m #========================================== # Применение изменений представленных =фиксацией= на текущей ветке: # не изменяет существующую историю в репозитории, вместо этого она добавляет фиксацию в историю: git cherry-pick фиксация # обычно используется чтобы представить определенные фиксации из одной ветки в репозитории в другую ветку ``` ![[Снимок экрана 2025-02-02 в 18.06.09.png]] ```sh # Отменяет фиксацию использую хэш этой фиксации # не изменяет существующую историю в репозитории # добавляет в историю новую фиксацию: git revert фиксация ``` ![[Снимок экрана 2025-02-02 в 18.13.01.png]] ```sh #========================================== # Изменение последней фиксации: git commit --amend # Изменение последовательности фиксаций: git rebase # требует, как минимум, имени другой ветки, в которую будут перемещены фиксации, по умолчанию перебазируются фиксации из текущей ветки, которых еще нет в целевой ветке # типично: сохранить серию фиксаций из указанной ветки на последнюю фиксацию ветки =master= ``` ![[Снимок экрана 2025-02-02 в 18.29.43.png]] ![[Снимок экрана 2025-02-02 в 18.30.02.png]] ```sh # использование git rebase - портирование, ветка topic была портирована в ветку master #========================================== # Если нужно сохранить все и заняться чем-то другим: git stash save "работаю над текущим проектом" # занимаемся чем-то другим ..... git commit -a -m "что-то другое" git stash pop # выполнить можно только в чистый рабочий каталог ! #========================================== # Запись изменений в головы веток # показывает транзакции только для одной ссылки за один раз git reflog show # журнал изменений ветки fred: git reflog fred # каждая строка-это отдельная транзакция из истории ссылки, нчиная с самого последнего изменения и вплоть до самого первого #========================================== # Создание "чистого" (bare) репозитория: git init --bare # Преобразовать репозиторий в другой чистый клон: git clone --bare vlapa@178.20.46.157:~/git/name new_name.git # добавить удаленную конфигурацию git remote add origin /путь/к/репозиторию # команда git remote добавила новый раздел remote с названием origin git push origin master # изменения ветки master отправлены удаленному репозиторию origin #========================================== # Посмотреть список веток в своем репозитории: git branch -a #========================================== # Загрузка обновлений: git pull # состоит из двух команд: -git fetch -git merge (rebase) - по умолчанию = merge #========================================== ```