Skip to content

FAQ GitHub

h8nor edited this page Mar 7, 2025 · 8 revisions

Q: Как обойти ошибку авторизации SSH

Tip

gpg: skipped <SHA1>: Unusable secret key  
gpg: signing failed: Unusable secret key  
error: gpg failed to sign the data  
fatal: failed to write commit object

A: Если авторизация раньше работала, то нужно обновить токены.

  • Команда проверки установленных токенов
    for keyfile in ~/.ssh/id_*; do ssh-keygen -l -f "${keyfile}"; done | uniq
  • Проверить вывод. Если ничего нет, то нужно создать новые токены

    [!IMPORTANT] Если в скобках указано Ed25519 или RSA 3072/4096, то обновить токены.
    В противном случае токены устарели, и лучше создать новые с указанными выше методами шифрования.

  • Просмотреть и подсветить секретные токены
    gpg -K --keyid-format LONG | grep -C 1 "^sec" | GREP_COLOR="01;36" egrep -i --color "([0-9A-F]{8,}|-\W+)"
  • Продлить время жизни секретного токена
    gpg --edit-key <SHA1>
    expire
    6m
    y    # подтвердить
    save # сохранить изменения

Q: Как обновить основную ветвь <master> в локальном репозитории?

A: В оригинальном репозитории должно появиться хотя бы 1 изменение (без новых изменений не обновятся соавторы, ⭐ и релизы). Ключ --ff не сохранит новую запись в истории.

  • Команда для выбора ветви <master> и слияние (merge) с удалённым (origin) репозиторием
    git checkout master
    git merge --ff origin/<master>
  • Команда для просмотра списка доставки (fetch) удалённых (origin) репозиториев
    git remote -v

Q: Как удалить файл из последнего изменения (commit)?

A: Последняя правка со всеми изменёнными файлами не будет отменена.

  • Команда перемещения указателя (HEAD) на предыдущее изменение (commit)
    git reset --soft HEAD~1
  • Команда отмены индексации файла; возврат к предыдущему изменению (commit)
    git reset HEAD <PATH>/<FILE>
  • Команда сохранения изменения (commit) с правкой последнего названия Ключ -S добавит подпись к изменению.
    git commit -S -c ORIG_HEAD

Q: Как соединить последние изменения (commit) в одно целое?

A: В активной ветви выбрать изменение (commit) и скопировать его SHA1. Последовательность действий:

  • Команда перемещения указателя (HEAD) на нужное изменение через SHA1 (не удаляет текущие правки)
    git reset --soft e01c5ha
  • Команда добавления файла в индекс
    git add <FILE>
  • Команда внесения правки в выбранное изменение (сохранённые изменения за ним будут удалены) Ключ -S добавит подпись к изменению.
    git commit --amend -S
  • Команда принудительной отправки (ключ -f) изменений (commits) в удалённый (origin) репозиторий
    git push -f origin master