Git 101

Типичный workflow базового уровня

git clone <указатель на репозиторий> - init в таком случае не требуется

git fetch (скачать изменения с сервера)
git merge (слить изменения в локальную копию)
эти две команды заменяются одной: git pull (по ситуации)

git status или status -s (короткий формат)
git add .

git commit
-a (all)
-m "Quick description" 

git push origin main

Отмена локальных изменений

Отменить коммит, но сохранить изменения в коде:
git reset --soft HEAD

Отменить два коммита вместе с изменениями кода:
git reset --hard HEAD~2

Отменить изменения конкретного файла:
git checkout <имя_файла>

Отмена изменений на remote

Откатиться до конкретного коммита:
git reset --hard <commit-hash>

...а затем forced push:
git push -f origin main

Пара слов про .gitignore

Если .gitignore был добавлен ДО версионирования (создания) конкретных файлов:

git add .
Проверить, какие файлы былидобавлены к индексации, и затем:

git reset -- <paths>
Чтобы unstage те файлы, которые не надо добавлять к следующей версии, и добавить их в .gitignore.

Если .gitignore был добавлен ПОСЛЕ версионирования некоторых файлов:

git rm --cached -- <paths>
Индекс будет пересчитан, но исходные файлы останутся нетронуты.

Пара слов про CR и LF

Набор команд, чтобы поменять правила обработки CR/LF и пересчитать индекс:

git config --local core.autocrlf input ИЛИ auto
git reset --hard
git checkout -- .

Подробнее про git reset

При работе в кросс-платформенной команде рекомендуется использование и настройка файла .gitattributes (ссылка на SO и статья в оф.документации).

Какие настройки можно проверить через консоль:

git config --get --show-scope core.eol
git config --get --show-scope core.autocrlf
git config --get --show-scope core.safecrlf
git config --get --show-scope core.whitespace

-- (двойной дефис) - это метка конца опций в CLI. Используется, чтобы не произошло случайных коллизий между опциями и последующим аргументом при вводе команды.

Просмотр истории коммитов и деревьев

Вариант 1. Простой лог

git log

Вариант 2. Красивый список

git log --graph --pretty=oneline --abbrev-commit --all --decorate

Вариант 3. git adog :)

git config --global alias.adog "log --all --decorate --oneline --graph"
git adog


Ссылки

Основное:

 

Комментарии

Популярные сообщения из этого блога

EVE: Навигация по вормхолам

beget, passenger, java

Линки: Туториалы по Python