Задать вопрос
Контакты
Местоположение
США, California

Достижения

Все достижения (19)

Наибольший вклад в теги

Все теги (145)

Лучшие ответы пользователя

Все ответы (524)
  • Почему при попытке сделать "git push" выдает ошибку?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    У вас проблемы в каждой команде.

    git commit -m "hw-EDU-9336"
    ...
    nothing to commit...

    — коммитить нечего. Git честно сообщает, что рабочая папка чистая и коммит не создался.
    Но это не мешает делать push.

    Совет: в любой непонятной ситуации смотрите git status. Смотрите его как до команд, так и после.

    git push
    ... The current branch ... has no upstream branch

    Здесь Git говорит, что текущая ветка не имеет связи ни с какой вышестоящей веткой. Git понятия не имеет, куда вы хотите пушить и что пушить.
    В общем случае команда выглядит примерно так:
    git push <репо_куда_пушить> <какую_ветку_пушить>

    Обычно при первой отправке мы просим гит создать связь локальной и вышестоящей веток.
    Гит подсказывает вам, как это сделать:
    git push --set-upstream origin hw-EDU-9336-sprint-1
    но можно написать проще, чтобы не мучиться запоминанием длинных названий:
    git push -b origin HEAD
    HEAD это синоним текущей ветки.

    Дальше у вас реальная ошибка. Скорее всего проблема в авторизации.

    Проверьте, что ключ действительно стучится в GitLab
    ssh -T git@gitlab.quality-academy.ru
    Успешный вариант: GitLab поздоровается и скажет, что логин найден.
    Неуспешный: "Permission denied (publickey)".

    И главное — публичный ключ должен быть добавлен в GitLab:
    User Settings → SSH Keys
    Если после этого Git продолжает упираться — значит просто нет прав на запись в репозиторий, а не проблема с ключами.
    Ответ написан
    2 комментария
  • В терминале Git Bash вылазит какой-то END и другое. Как убрать?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Git хочет показать вам более одного экрана с информацией, для этого он вызывает стандартную программу пейджера Unix less. Просто введите q, чтобы вернуться в терминал, когда вы больше не хотите перемещаться по выходным данным.

    j перейти на одну строку вниз
    k переместиться на одну строку вверх
    space перейти на одну страницу вниз
    b перейти на одну страницу вверх
    h показать помощь
    / поиск вперёд
    ? поиск назад

    Если вы не хотите less, просто замените его другим пейджером в конфигурации. Если вам вообще не нужен пейджер, просто используйте cat:

    git config --global --add core.pager cat
    Ответ написан
    4 комментария
  • В чем разница между undo commit, revert commit и reset branch to commit?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Там в меню вашей IDE есть ещё несколько методов откатить изменения.
    Это же JetBrains? Все способы подробно описаны в справке, например вот как в IntelliJ IDEA

    Reset удаляет все коммиты выше выбранного. Там предлагается четыре варианта этой команды. Отличия их в том, как поступить с изменениями в рабочем каталоге и в индексе.

    Revert не удаляет коммит, а создаёт новый, который описывает действия необходимые для отмены выбранного коммита.

    Undo позволяет отменить последний коммит. Но изменения коммита предлагает сохранить в новый changelist. Файлы в рабочем каталоге не изменятся и можно будет их подправить и заново закоммитить.

    Drop — удобная команда для удаления произвольного коммита из середины истории. Под капотом там на самом деле выполняется интерактивный rebase, но в автоматическом режиме.

    Revert Selected Changes напоминает Revert, но отменяет изменения отдельного файла, а не всего коммита. Эта команда доступна на Панели изменённых файлов.

    Get позволяет вернуть любой файл к состоянию на определённый коммит в истории. Выберем файл любым удобным способом и контекстное меню Git | Show History покажет все коммиты, в которых изменялся данный файл. Кликнув на нужном коммите правой кнопкой увидим команду Get
    Ответ написан
    Комментировать
  • Как почистить Git-репозиторий?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вот несколько фактов, которые помогут понять как работает Git.
    • Файл .gitignore действует только на ещё не отслеживаемые файлы.
    • Файл .gitignore предназначен для описания того, что мы не хотим СЛУЧАЙНО добавить в репозиторий. Либо не хотим случайно удалить переключив ветку.
    • Мы можем ПРИНУДИТЕЛЬНО добавить в репозиторий ЛЮБОЙ файл, даже если он описан в .gitignore.
    • Добавление файла в .gitignore не удалит сам файл из репозитория. Если файл УЖЕ в репозитории, то он продолжит отслеживаться, независимо от наличия .gitignore.
    • Если больше не хотим отслеживать какой-то файл, то просто удаляем его из репозитория. Ключ --cached позволит оставить файл в рабочем каталоге текущего репозитория если он нужен.
    git rm --cached -- '.DS_Store'
    git commit

    Но последний рецепт сработает только на одном компьютере. Если коллеги переключатся на этот коммит, то файл удалится у них из рабочего каталога.
    Ответ написан
    4 комментария
  • Безопасно ли удалить pull request?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Удалить Pull Request невозможно, разве только закрыть его, да и не нужно ничего удалять для доработки задачи! Просто вернитесь в свою тематическую ветку. Добавьте новые коммиты с исправлениями и отправьте их на гитхаб. Pull Request обновится автоматически.

    Даже если вы закрыли пиар, но продолжили работать в той же ветке, то последующий пуш просто заново откроет этот же пиар.

    Аналогично если на Code Review будут замечания, то вы их просто исправляете локально в той же тематической ветке и пушите. Доработки сразу попадут в Pull Request.
    Ответ написан
    Комментировать