Git Cheat Sheet
Создание репозитория git init - инициализирует папку как гит репозиторий git add --all, git add . - отмечает файлы к коммиту git commit -m "commit message" - создает коммит с отмеченными файлами, с сообщением git remote add <name> <url> - указывает удаленный гит-репозиторий под именем (обычно origin) git push -u origin master - отправляет в origin ветку master, -u указывает на то, что это сочетание должно стать значением по умолчанию (и далее можно делать git push без указания целей) Работа с локальными изменениями git status - показывает текущее состояние рабочей директории и индекса git log - выводит историю коммитов git log -p <file> - показывает историю коммитов для файла git blame <file> - выводит построчно файл с показом коммита и автора изменений Отмена изменений git reset --hard или git reset --hard HEAD - удаляет локальные изменения, восстанавливая рабочую директорию к последнему коммиту (голове) git checkout HEAD <file> - отменяет изменения в выбранном файле, восстанавливая его к хэду git revert <HASH> - создает новый коммит, отменяющий изменения из указанного коммита git reset --soft - сбрасывает историю до последнего локального коммита без изменения рабочей директории и индекса Ветвление и Слияние git checkout -b <branch_name> - создает новую ветку и переключается на нее git checkout <branch_name> - переключается на ветку git merge <branch_name> - сливает указанную ветку в текущую ветку Прятание git stash - спрятать все локальные изменения git stash list - показать список спрятанных изменений git stash apply - применить/вернуть последние спрятанные изменения git stash pop - применить последние спрятанные изменения и удалить их из списка git stash drop - удалить последние спрятанные изменения Теги git tag tagname - создать новый тег tagname git tag - вывести список тегов git push origin tagname - отправить в удаленный origin указанный тег git push --tags - отправить все теги git tag -D tagname - удалить тег локально git push --delete origin tagname - удалить в удаленном origin указанный тег Сравнение изменений git diff - показать изменения между текущей рабочей папкой и индексом git diff HEAD - показать изменения между рабочей папкой и последним коммитом Управление ветками git branch -d <branch> - удалить локальную ветку, если она была слита в другую git branch -D <branch> - удалить локальную ветку, невзирая слита ли была она или нет Управление удаленными репозиториями git remote -v - показать список удаленных репозиториев git remote add <name> <url> - добавить удаленный репозиторий с именем <name> и адресом <url> git remote set-url <name> <url> - изменить <url> существующего удаленного репозитория с именем <name> git remote remove <name> - удалить удаленный репозиторий с именем <name> git fetch - получить изменения из удаленного репозитория без их слияния с локальной веткой
Пакет Unique в Go 1.23
Перевод статьи: https://go.dev/blog/unique Стандартная библиотека Go 1.23 теперь включает новый пакет unique. Цель этого пакета — предоставить возможность канонизации сравниваемых значений. Иными словами, пакет позволяет устранить дубликаты значений так, чтобы они ссылались на единственную, каноническую и уникальную копию, при этом эффективно управляя этими каноническими копиями за кулисами. Вы, возможно, уже знакомы с этой концепцией, которая называется «интернирование». Давайте разберёмся, как это работает и почему это полезно. Простая реализация интернирования На высоком уровне интернирование очень просто. Взгляните на пример кода ниже, который устраняет дубликаты строк, используя обычную карту (map). ...