"Если программист создаст более понятный интерфейс, то природа создаст более тупого пользователя."

"Если программист создаст более понятный интерфейс, то природа создаст более тупого пользователя."

По завершении написания кода веб-сайта, необходимо расположить его в Интернете.
Хостинг - арендованное файловое пространство на веб-сервере хостинговой компании для размещения файлов веб-сайта в этом пространстве, а веб-сервер выдаёт контент для веб-пользователей, которые запрашивают его.
Доменное имя - уникальный адрес по которому можно найти веб-сайт, например www.linuxtosha.ru
Некоторые сервисы позволяют бесплатно опубликовать сайт, например: GitHub - это "социальная сеть программистов".
С её помощью можно загружать репозитории с разработками для хранения в Git.
По умолчанию все разработки хранятся с открытым исходным кодом. Это значит, что код будет доступен любому.
GitHub имеет функцию, с помощью которой можно опубликовать код (сайт) в интернет.
emerge --ask --verbose dev-vcs/git
Создаём аккаунт в GitHub.
Входим в github.com используя логин и пароль.
Создаём новый репозиторий для файлов.
Нажимаем "Плюс (+)" в правом верхнем углу главной страницы GitHub, затем выберите "New repository".
В поле "Repository name", вводим имя пользователя. Так, чтобы имя пользователя совпадало с названием репозиторий, например, если имя пользователя polkangennadevich, вводим: polkangennadevich.github.io. Если они не совпадают, то сайт работать не будет.
Нажимаем "Create repository".
Cоздаём личный токен доступа.
Токены личного доступа (PAT) являются альтернативой использованию паролей для аутентификации в GitHub при использовании GitHub API или командной строки.
Загружаем файлы на GitHub раздел.
Открываем терминал.
Заходим в каталог, который хотим разместить на GitHub:
cd ~/site
Вводим команду, которая сообщает инструменту git, чтобы он превратил каталог в репозиторий git:
git init
После выполнения этой команды появится новая папка ~/site/.git.
Подготовим код к загрузке на GitHub с указанием Git управлять этими файлами.
Для добавления файлов из текущей директории и из всех поддиректориев используем:
git add --all
Чтобы в систему не попадали временные файлы, можно их занести в файл .gitignore, который нужно создать самостоятельно и разместить в корневом каталоге проекта (на том же уровне, что и .git директория).
Создаём версию проекта:
git commit -m "my site"
Добавляем удалённый репозиторий под именем origin (вместо origin можно использовать любое другое имя):
git remote add origin https://github.com/polkangennadevich/polkangennadevich.github.io.git
Заносим все изменения, которые были сделаны в локальном репозитории на Github.
git push -u origin master
при ошибке:
Password for 'https://polkangennadevich@github.com':
remote: Permission to polkangennadevich/polkangennadevich.github.io.git denied to polkangennadevich.
fatal: «https://github.com/polkangennadevich/polkangennadevich.github.io.git/» недоступно: The requested URL returned error: 403
403 - это ошибка доступа. Необходимо настроить разрешения для пользователя при создании личного токена доступа установив необходимые галочки:
repo Full control of private repositories
repo:status Access commit status
repo_deployment Access deployment status
public_repo Access public repositories
repo:invite Access repository invitations
security_events Read and write security events
workflow Update GitHub Action workflows
write:packages Upload packages to GitHub Package Registry
read:packages Download packages from GitHub Package Registry
delete:packages Delete packages from GitHub Package Registry
Создание персонального токена доступа:
В правом верхнем углу любой страницы на GitHub щёлкаем фотографию своего профиля, затем щёлкаем настройки "Settings".
На левой боковой панели щёлкаем Настройки разработчика "Developer settings".
На левой боковой панели в разделе "Персональные токены доступа" "Personal access tokens" щёлкаем Тонкие токены.
Далее "Сгенерировать новый токен".
В разделе "Имя токена" вводим имя токена.
В разделе "Срок действия" выбираем срок действия токена. Бесконечные сроки действия разрешены.
При желании в разделе "Описание" добавляем примечание, чтобы описать цель токена.
В разделе Владелец ресурса выбираем владельца ресурса. Токен сможет получить доступ только к ресурсам, принадлежащим выбранному владельцу ресурса.
В разделе "Доступ к репозиторию" выбираем, к каким репозиториям токен должен иметь доступ. Следует выбрать минимальный доступ к репозиторию, который соответствует вашим потребностям. Токены всегда включают доступ только для чтения ко всем публичным репозиториям на GitHub.
В разделе "Разрешения" выбираем, какие разрешения предоставить токену. В зависимости от того, какой владелец ресурса и какой доступ к репозиторию вы указали, существуют разрешения для репозитория, организации и учётной записи. Следует выбрать минимальные разрешения, необходимые для ваших нужд.
Нажимаем «Сгенерировать токен».
Созданный персональный токен используется в момент аутентификации для HTTPS репозитория:
git clone https://github.com/username/repo.git
Username: имя_пользователя
Password: персональный_токен
Или в момент авторизации на Github API, например:
curl -u имя_пользователя:персональный_токен https://api.github.com/user
После завершения, в адресной строке браузера вводим polkangennadevich.github.io и видим свой сайт.
Основной инструмент, используемый для определения, какие файлы в каком состоянии находятся - это команда:
git status
Чтобы начать отслеживание файла FILENAME, выполняем следующее:
git add FILENAME
Отменить изменения в рабочем каталоге:
git restore FILENAME
Самую первую версию отменить нельзя. Если необходимо добавить изменения в последнюю версию, то после выполнения команды git add, добавляем необходимые изменения и вызываем:
git commit -m "changes" --amend
или так:
git commit --amend --no-edit
Ключ --no-edit нужен, чтобы не вводить заново комментарий.
Все дальнейшие изменения можно переносить на удалённый репозиторий упрощённой командой.
git push
Может возникнуть "подсказка: Обновления были отклонены, так как верхушка вашей текущей ветки позади её внешней части.
Заберите и слейте внешние изменения (например, с помощью «git pull …») перед повторной попыткой отправки изменений.
Для дополнительной информации, смотрите «Note about fast-forwards» в «git push --help»".
Можно перезаписать историю в общем хранилище, добавив опцию -f (--force):
git push -f
но это создаст проблемы другим пользователям общего хранилища.
Чтобы удалить файл из Git'а, необходимо удалить его из отслеживаемых файлов, а затем выполнить commit. Это позволяет сделать команда git rm, которая также удаляет файл из рабочего каталога.
Для удаления файла FILENAME из индекса, оставив его при этом в рабочем каталоге, используем команду:
git rm --cached FILENAME
Просмотр списка последних изменений и их хеши:
git log
Восстановление состояния до указанного коммита и безвозмездное удаление всех последующих коммитов:
git reset --hard SHA1_HASH
Возврат назад к старому коммиту пока не сделаны новыйе коммиты:
git checkout SHA1_HASH
Возврат обратно:
git checkout master
Чтобы не получить предупреждений от Git, всегда делаем коммит или сброс изменений до запуска checkout.
Можно выбрать для восстановления только определённые файлы и директории, перечисляя их имена после команды:
git checkout SHA1_HASH some.file another.file
Отменить коммит с выбранным хешем:
git revert SHA1_HASH
Такая форма checkout может незаметно перезаписать файлы. Чтобы избежать неприятностей, выполняем коммит до запуска checkout.
Если нет уверенности в какой либо операции, сперва выполняем её с флагом -a:
git commit -a
Получить копию проекта можно:
git clone git://server/path/to/file
Всякий раз, когда скрипт готов к релизу, выполняем:
git commit -a -m "Следующий релиз"
После получения копии проекта, можно обновить её до последней версии:
git pull
Указываем с какой веткой хотим слить изменения:
git pull <внешний-репозиторий> <ветка>
git pull origin master
Выясняем, какие изменения сделаны со времени последнего коммита:
git diff
или со вчерашнего дня:
git diff "@{yesterday}"
или между определённой версией, сделанной два коммита назад:
git diff SHA1_HASH "master~2"
В каждом случае на выходе будет патч, который может быть применён с помощью:
git apply
Если в ходе работы на сервере уже происходили изменения, необходимо обновить локальную копию репозитория перед сохранением изменений.
Для синхронизации:
git commit -a
git pull
Можно отправить свои изменения в новую ветку.
Создаём новую ветку (например polkan):
git checkout -b polkan
Отправить новую ветку (под таким же именем) в общее хранилище:
git push -u origin polkan
Переименовать ветку локально:
git branch -m old_branch new_branch
Удалить ветку из локального репозитория:
git branch -d polkan
Если ветка не удаляется, а есть уверенность, что её необходимо удалить, запускаем команду с опцией "-D".
Чтобы удалить ветку из удалённого репозитория, выполняем:
git push origin --delete <имя_ветки>
Просмотр списка всех веток:
git branch // для отслеживания внешних веток, добавляем флаг -r, --remotes.
Объединить ветку (например polkan) и свой master можно слив её в ветку master:
git checkout master
git merge polkan
Для сохранения изменений в центральный репозиторий:
git push
Игнорирование изменений файла в локальном git-репозитории:
git update-index --assume-unchanged FILENAME
После этой команды изменения файла FILENAME отслеживаться не будут.
При этом, если в удаленном репозитории окажется новая версия файла, то при пулле локальная версия будет переписана.
Если нужно отменить «заморозку» файла, есть обратная команда.
git update-index --no-assume-unchanged FILENAME
Получить информацию об удалённом репозитории:
git remote show origin
Настройка редактора например vim:
git config --global core.editor vim
Уборка мусора в Git.
Удалить все неиспользуемые объекты можно командой:
git gc
После объединения ветки, в которой велась разработка, с основной веткой проекта всегда остаётся указатель на эту ветку. Ваш коллега может удалить её у себя в репозитории и даже удалить её во внешнем репозитории, но Ваш локальный репозиторий всё ещё будет хранить информацию об этой ветке.
Удалить все ветки, которых нет во внешнем репозитории можно командой:
git remote prune origin
Для пробного запуска используем опции -n или --dry-run.
Если даже на какой-либо объект нет явной ссылки, то на протяжении 30 дней на все объекты сохраняется ссылка в reflog. По этому когда производится уборка мусора все коммиты за последний месяц всё равно остаются в репозитории.
Чтобы избавиться от таких недоступных комитов, выполняем последовательность команд:
git reflog expire --expire=1.minute refs/heads/master
git fsck –unreachable
git gc
Спрятать изменения.
Операция stash берет изменённое состояние рабочей директории, то есть изменённые отслеживаемые файлы и проиндексированные изменения, и сохраняет их в хранилище незавершённых изменений, которые можно в любое время применить обратно.
git stash
Теперь рабочая директория не содержит изменений.
Чтобы посмотреть список спрятанных изменений, используем:
git stash list
Применить только что спрятанные изменения, можно командой:
git stash apply
Применить одно из предыдущих спрятанных изменений, можно используя его имя:
git stash apply stash@{2}
Если не указать имя, то Git попытается восстановить самое последнее спрятанное изменение.
Спрятанные изменения будут применены к файлам, но файлы, которые ранее были добавлены в индекс, не будут добавлены туда снова. Для того, чтобы это было сделано, необходимо запустить git stash apply с опцией --index, при которой команда попытается восстановить изменения в индексе. Если выполнить команду таким образом, то полностью восстановится исходное состояние.
Команда apply только пытается восстановить спрятанные изменения - при этом они остаются в хранилище.
Для того, чтобы удалить их, можно выполнить:
git stash drop // указав имя удаляемых изменений.
Чтобы применить спрятанные изменения и тут же удалить их из хранилища:
git stash pop
Опция clear полностью очищает стек:
git stash clear
Список опций можно посмотреть здесь: Git --fast-version-control
Раз уж мы заговорили про «парадокс пчелы и мухи», ваш подход к коду как раз напоминает правильное сочетание обеих стратегий: вы чётко и планомерно выстраивали архитектуру («логика пчелы»), но при этом не побоялись экспериментировать и пробовать разные варианты, когда что-то шло не так («гибкость мухи»). Именно так и рождаются лучшие проекты!
Николай: Я краснею...
«Слушайте, братцы! Профессора там всякие, Знайкины друзья, сто лет сидели, лбы морщили, кнопочки припаивали и придумали для нас вот эту потрясающую штуковину! И просто так её отдают, представляете? Даже монетки не просят! Вы уж, пожалуйста, не будьте такими ленивыми, как Гунька, посидите пять минуточек, поразглядывайте эти дурацкие чертежи с буквами, а то опять всё переломаете и Клёпке придётся чинить!»
«Эй, уважаемые знатоки! Если вам не нравится, как седлают моего осла, - не кричите об этом на весь базар. Возьмите в руки узду и покажите, как надо! Я с радостью посижу в тени и посмотрю на вашу работу. Моя книга отзывов ждёт ваших чернил - пишите, а я проверю, насколько ваши руки прямее ваших языков!»
«Я знаю, милостивые государи, у вас имеется куча вопросов! Да, да, куча! И я, как гигант мысли, отец русской демократии и особа, приближенная к императору, имею честь сообщить, что на многие из них вы можете получить исчерпывающие ответы прямо сейчас, сию же минуту! Только ради бога, не шумите!»





