Задать вопрос
Ответы пользователя по тегу GitHub
  • Как удалить закрытый pull request?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Pull Request в GitHub-репозитории можно только закрыть. Удалить созданный ранее PR невозможно.
    Ответ написан
  • Как сделать push от своего аккаунта Git так, чтобы было видно имя другого пользователя?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    В гите нет никаких аккаунтов. Репозиторий лежит локально и у вас сразу к нему доступ безо всяких паролей. Коммиты вы подписываете любым именем и мылом, каким вздумается. И эту подпись у коммита в дальнейшем невозможно изменить даже если захотеть. И тем более она никак не поменяется при передаче на другой компьютер.

    Аккаунт, под которым вы делали push, никак не отразится на самих коммитах. Каким именем вы их подписали при создании, то имя и останется в них навсегда.
    Ответ написан
    Комментировать
  • Как скрыть Pull Request от других пользователей?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вы наверное хотите скрыть не сам Pull Request, а код, который виден там.
    Но ведь этот код студенты отправляют из своих открытых проектов в ваш открытый проект. Значит код в любом случае виден всем в интернете, причем даже без создания PR.
    Единственный способ скрыть код — публиковать его в закрытые проекты.
    Пусть студенты создают приватные репозитории и дают вам доступ туда.
    Ответ написан
    Комментировать
  • GitHub Pages дает ошибку. Как исправить?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Проверяйте файл .gitmodules
    Смотрите откуда подгружается подмодуль и доступен ли его репозиторий из GitHub.
    Ответ написан
    Комментировать
  • Как авторизоваться на GitHub?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    После нажатия «Войти через браузер» должен открыться собственно браузер со страницей гитхаба, где вы должны нажать кнопочку «Разрешить».
    Если вы не разрешили или что-то пошло не так, то только тогда вылезет предложение ввести пароль в терминале. Но там вместо пароля нужно вводить не ваш гитхабовский пароль, а текст токена, который вы должны были заранее создать. Токен вам покажут только один раз, поэтому скопируйте его в буфер и сохраните где-нибудь.
    И вставляйте его в терминале тоже через буфер обмена, чтобы не ошибиться. При вводе паролей с терминале их никогда не видно, не пугайтесь и просто жмите Enter после ввода.
    Ответ написан
    Комментировать
  • Как добавлять изменения в репозиторий git с разных компьютеров?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Просто скопируйте закрытый ключ с одного компа на другой и всё. Либо создайте новую пару на втором компе и добавьте ещё один открытый ключ на гитхаб.
    Ответ написан
    2 комментария
  • Почему не появляется кнопка compare and pull request?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега GitHub
    Автоматизатор
    Эти желтые плашки не являются основным способом создания PR. Это просто эвристические подсказки, они могут появиться, а могут и нет. Ведь не всегда после пуша требуется создать PR. И не факт, что GitHub угадает, в какую ветку на самом деле надо делать слияние.
    Те способы что вы указали, они и являются правильными, и не вижу в них ничего неудобного. Есть и другие способы создания PR, например через команду gh pr create, это тоже корректно.
    Ответ написан
    Комментировать
  • Почему невозможно вводить символы в поле для пароля?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    При вводе пароля символы не показываются.
    Но на гитхабе вместо пароля аккаунта надо вводить значение токена.
    Ответ написан
    Комментировать
  • Удалил большой файл, а оно всё равно не пушится и жалуется на этот файл, как исправить?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Мусорный файл нужно удалить из всех коммитов в которых он есть, а не просто из актуального состояния проекта.
    • Если файл добавлен в последнем коммите, то просто поправьте этот коммит через команду commit --amend
    git rm --cached "r0_code/trainee/Java_Полное_руководство_Герберт_Шилдт,_10_е_издание.pdf"
    git commit --amend

    • Если файл добавлен в старом коммите, то можно поправить этот коммит через команду rebase --interactive
    Как пользоваться командой смотрим в инструкциях к гиту.
    Примерно так
    При запуске команды git rebase --interactive <коммит>
    откроется текстовый редактор с планом пересборки ветки.
    • Мы заменяем команду pick на edit в первой строке. Сохраняем и выходим редактора.
    • Репозиторий переключается на состояние, когда мы только что добавили ненужный файл в репозиторий.
    Значит мы можем просто удалить файл способом, который я указал в выше — правим текущий коммит через --amend
    • Затем командой git rebase --continue продолжим пересборку, чтобы гит повторил все последующие коммиты


    • Самый простой и надёжный способ вычистить репозиторий от файла — использовать скрипт filter-repo
    git filter-repo --invert-paths --force --path "r0_code/trainee/Java_Полное_руководство_Герберт_Шилдт,_10_е_издание.pdf"

    Последний вариант полностью автоматизирован и удалит файл сразу из всех веток.
    Ответ написан
    Комментировать
  • Как настроить отслеживание изменений файлов репозитория GitHub в VSCode?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Какой-то плагин всё сломал. Помогает выключение и включение плагинов для Git.
    Ответ написан
    Комментировать
  • Как откатиться к предыдущему состоянию проекта и выгрузить эту ветку в репозиторий?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Расшифруйте свою фразу
    Пришлось откатить последний pull с репозитория.

    Пришлось что-то сделать? Что именно вы сделали? Либо вы только собираетесь что-то сделать? Например, Pull подгрузил актуальный мастер с GitHub, в котором коллеги сделали какую-то работу и вы теперь хотите выкинуть их работу в корзину и откатить проект?

    git revert 6759221be
    Эта команда отменяет действия некоего коммита 6759221be. Обычно это самый правильный и безопасный способ отменить какие-то изменения, при работе в команде.

    git checkout 6759221be
    Этой командой мы отрываем голову и выходим из мастера в неопределённое состояние. Непонятно чего вы хотите этой командой добиться. Делать в данный момент Push бесполезно, так как вы НЕ в мастере. git push -f резонно вам говорит что локальный мастер согласован с внешним. Ведь вы ничего не меняли в мастере, а просто переключили состояние рабочего каталога на левое состояние, не совпадающее ни с какой веткой.

    Конечно можно вернуться в мастер и сделать git reset --hard 6759221be
    Но таким образом вы создадите фактически новый мастер и если его принудительно отправить на гитхаб, то всё равно
    «Кто нибудь начнет путаться, забудет что теперь надо использовать условный master2»,
    а точнее увидят что их мастеры и мастер на гитхабе это совершенно разные ветки и нужно будет каким-то образом выходить из положения. Поэтому правильней не пересоздавать ветки а добавлять revert-коммиты с отменой изменений.

    Я так и не понял, что именно вы сделали или хотите сделать.
    Есть подозрения, что откатить вы хотите не pull, а push со своим не очень удачным коммитом.

    В любом случае, если вы хотите откатить состояние, то и изменяйте текущее состояние проекта в рабочем каталоге. В переписывании истории коммитов нет никакого смысла. Нет ничего страшного в том, что неудачный коммит виден в log, главное чтобы в итоге проект получился правильный.
    Ответ написан
    Комментировать
  • Можно ли создать удаленный репозиторий на GitHub?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Уже есть удобный GitHub CLI
    Ответ написан
    Комментировать
  • Как прописать URL, чтобы открыть файл на github в браузере?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Лариса, RAW-ссылка гитхаба отдаёт правильный файл, но с типом контента text, поэтому браузер показывает его как текст, а не рендерит html.
    Но можно обойти эту проблему используя сторонние сервисы
    https://raw.githack.com/<usergithubname>/<repo>/<branch>/path/to/test.html
    Ответ написан
    Комментировать
  • Как выйти из github в git bash windows?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Отменить авторизацию легко
    echo "url=https://github.com" | git credential reject

    При следующем пуше снова попросит авторизацию.
    Ответ написан
    Комментировать
  • Почему гитхаб не дает пушить на main?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Нет, не на main, а из main.

    Команда git push -u origin main делает отправку локальной ветки main во внешний репозиторий origin, но ветки main не существует локально, о чем вам и сообщили в ошибке.

    Вам нужно либо переименовать master в main:
    git branch -M main

    Либо так и написать, что вы хотите master отправить во внешний main
    git push -u origin master:main

    Но судя по скрину, у вас репозиторий не пустой. Вы уже создали там ветку с первоначальным коммитом. Поэтому вы не сможете просто так туда сделать push, так как ваши ветки не имеют общей истории. Это РАЗНЫЕ деревья. В таких случаях можно просто пересадить локальную ветку на вершину внешней через rebase. Либо создать ПУСТОЙ репо, как вы и сделали.
    Ответ написан
    Комментировать
  • Как «вытащить» папку из Git репозитория в отдельный репозиторий?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Задача решается легко
    # Клонируем репо в две папки рядом с каталогом project
    git clone --no-local . "../new_front" # тут будет фронт
    git clone --no-local . "../new_back" # тут будет бэкенд
    cd ../new_back # перейдем в новый бэкенд 
    # Вычистим каталог front из истории бэкенда
    git filter-repo --path "front/" --invert-paths 
    cd ../new_front # перейдем в новый фронт
    # Оставим в проекте фронта только содержимое подкаталога front, 
    # сделав его новым корнем проекта
    git filter-repo --subdirectory-filter "front/"

    Пакет git-filter-repo возможно придётся установить. Он не входит в базовое ядро Git.
    Ответ написан
    Комментировать
  • Как сделать клонирование файлов с репозитория GitHub в новый проект?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Комментировать
  • Как отменить несколько коммитов в форкнутом репозитории?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Репозиторий уже содержит ВСЕ версии проекта. Не совсем понятно что именно вам нужно.
    Если хочется актуальный main откатить на 5 коммитов назад, то клонируйте форк к себе на компьютер, затем откатите нужную ветку назад через git reset --hard HEAD~5 и отправьте обратно git push --force
    Ответ написан
    Комментировать
  • Как из гита навсегда удалить файл?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Самый надёжный способ вычистить репозиторий от файла — использовать скрипт filter-repo
    # клонируем репозиторий в соседний каталог
    # иначе придётся использовать ключ --force
    git clone --no-local . ../clonerepo/
    # переходим в свежий клон
    cd ../clonerepo
    # чистим
    git filter-repo --path "path/to/file" --invert-paths
    # проверим что файл исчез
    git log --all --oneline --name-status -- "path/to/file"
    Ответ написан
    Комментировать
  • Не получается запушить в репозиторий. Почему зависает на writings objects?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Добавили большой файл, закоммитили, затем удалили этот файл и снова закоммитили
    ➜ git log  --oneline              
    0aa4c37 (HEAD) Delete bigfile
    65211de Add bigfile
    591a997 Initial commit

    Хотим склеить эти два коммита в один.
    ➜ git rebase -i HEAD~2
    Откроется редактор со сценарием
    pick 65211de Add bigfile
    pick 0aa4c37 Delete bigfile

    Меняем его на такой
    pick 65211de Add bigfile
    squash 0aa4c37 Delete bigfile

    Сохраняем, выходим и получим.
    Successfully rebased and updated refs/heads/main.
    Теперь большого файла нет и он не помешает сделать push
    Ответ написан
    Комментировать