Команды GIT

git init . - инициализировать гит в текущей директории, создастся папка .git с структурой git
git add file - пометить файл к сохранению в репозиторий (коммита), если не указывать файл, пометит всю директорию
git rm - удалить из гита и рабочей директории файл
git restore - восстановить удаленный файл из рабочей директории (он сохранен в гите)
git ls-files --stage - просмотр индекс файла, хеш совпадает с именем папки+файла в /objects
git cat-file -p <хеш> - узнать тип файла
git cat-file blob/commit <хеш> - отобразить содержимое файла из (лежит в objects)
git status - отобразить все 3 набора файлов, коммиты, добавленные к коммиту файлы и недобавленные
git commit -m ‘Коммент’- сохранить отмеченные файлы в репозиторий, создастся файл коммита и файл tree с снимком индекса на момент коммита
git log - история коммитов ветки текущей ветки в виде графа
git log --graph - история коммитов текущей ветки в виде графа
git log --all --graph --oneline - история коммитов всех веток в виде компактного графа
git blame file1 - история изменений файла с хешем коммита, датой и автором изменений
git branch - отобразить список всех веток
git checkout <хеш коммита> - переключиться на указанную ветку/коммит, файлы в директории с его версией и если создать коммит, он не будет привязан ни к чему/доступен по идентификатору
git switch - - вернуться к основной ветке
git switch -c - создать ветку
git checkout -b "branch1" - создать ветку branch1
git clone https://github.com/lepkov/devops-school-git - клонировать удаленный репозиторий к себе в текущую директорию
git reflog - история переключения всех указателей
git tag sometext - для создания указателя (который не двигается как ветка) на текущий коммит
git merge bugfix_branch- слияние в рамках линейной истории, новые объекты не создаются (режим fast forward), переключается указатель на текущую ветку (master) или слияние в рамках нелинейной истории, создаётся новый коммит, который объединяет обе ветки, будет 2 родителя
git chekout new_feature > git rebase master > git merge - слияние нелинейной истории, коммит будет перенесен как патч в конец ветки master, родитель будет один
git show-ref - перечень хранимых указателей
git reset --hard - перемещает HEAD на указанный коммит и возвращает состояние директории на тот момент, откат изменений залогирован, это нужно например, когда хотим откатить слияние веток, коммит останется, но из истории будет удален
git checkout - переставляет указатель HEAD
git remote -v - список удаленных репозиториев
git fetch - подтянуть все изменения в локальном репозитории из удаленного
git pull = git fetch + git merge
git push - отправка изменений загруженной ветки
git push --set-upstream origin master-patched - залить в репозиторий origin, создавая ветку master-patched, когда например пуш в основную запрещен
git am --show-current-patch - просмотр и приминение патчей

Важно в конце файлов делать переход на новую строку, это не вызовет проблем в дальнейшем с построчной обработкой файлов.

Ссылки

.gitignore для разных проектов Нужно, чтобы случайно не выложить данные с sensitive data так сказать, пароли, логины и т.д.

Поделиться