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

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Если отменить изменения файла и закоммитить, то он исчезнет из PR
    git restore <FILE> origin/target_branch
    Ответ написан
    Комментировать
  • Как синхронизировать локальные файлы с удалённым репозиторием?

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

    Но проще использовать ссылку https, чтобы не возиться с ключами.

    git init # инициализировать репозиторий в папке тестового проекта
    git remote add origin <URL> # указать адрес вышестоящего репозитория
    git fetch # скачать вышестоящий репозиторий
    git reset origin/master # установить указатель на ветку master
    # существующие локальные файлы в рабочем каталоге измениться не должны
    git branch --set-upstream-to=origin/master master 
    # связать master с origin/master


    Вы делаете почти правильно
    git fetch origin
    -- ошибок не выводит, но и результата никакого не даёт

    Потому что вы ранее уже сделали pull, который включает в себя fetch
    Если ничего не выводит, значит ошибок нет и изменений в origin тоже нет.

    fatal: 'origin/master' does not appear to be a git repository

    Гит говорит, что origin/master не является корректным адресом репозитория.
    Правильный синтаксис: git pull origin master

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

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Репозиторий нужно создавать ВНУТРИ каталога с проектом, а не в корне профиля пользователя.

    вместо нормальной структуры папок в удаленном репозитории: proj/файлы проекта

    Это вовсе не нормальная структура. Сама папка proj не должна отображаться в проекте.
    Ответ написан
    Комментировать
  • Не могу сделать git push heroku master, что делать?

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

    Удалить ошибочную авторизацию можно командой
    echo "url=https://github.com" | git credential reject
    Ответ написан
    Комментировать
  • Как восстановить ветки на github?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Написано же merged. Значит как все коммиты ветки зафиксированы в репозитории.
    Переключись на нужный коммит и создай на нём ветку.

    Если удалил ещё не слитую ветку, то восстанови через git reflog

    Все операции делаются локально на рабочем компьютере.
    Ответ написан
    Комментировать
  • Как обеспечить безопасность приватного репозитория на GitHub?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Git Credential Manager запоминает авторизацию в профиле текущего пользователя.
    На другом компьютере никто не сможет увидеть ваш приватный репозиторий.
    Даже другой пользователь вашего компьютера не увидит секретов.
    Ответ написан
    Комментировать
  • Как перенести изменения с GitHub на сервер?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    git init
    # добавить в .gitirnore /config/db.php
    git add . # загнать остальные файлы под отслеживание
    git commit
    git remote add origin https://github.com/..........
    # на рабочем компьютере удалить db.php из репозитория
    # и никогда больше добавлять такие вещи в репо
    git pull origin master # влить изменения с компа
    # на этом этапе скорее всего вылезут конфликты
    # сможете их разрешить прямо на сервере?
    Ответ написан
    Комментировать
  • Как сменить аккаунт GitHub?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Нужно не аккаунты переключать, а давать права на репозиторий. Зачем вам несколько аккаунтов? Достаточно одного.

    Либо работать через SSH, тогда аккаунты не понадобятся в принципе.
    Ответ написан
    Комментировать
  • Почему не могу запушить репозиторий в github?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Большой файл видимо был добавлен в один из новых, ещё не запушенных коммитов. И затем был удалён, но остался в истории. Неважно, что сейчас в рабочем каталоге. Пушится не рабочий каталог, а ветки репозитория. Это разные сущности.

    Просто склейте новые коммиты в один, это решит проблему.
    git reset --soft github/master
    git commit -с
    git push github -all
    Ответ написан
    Комментировать
  • Как отправить инициализированный локально репозиторий Git в свой аккаунт на Git-хостинге?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Используйте GitHub CLI
    # create a repository interactively
    gh repo create
    
    # create a new remote repository and clone it locally
    gh repo create my-project --public --clone
    
    # create a remote repository from the current directory
    gh repo create my-project --private --source=. --remote=upstream

    Или GitLab CLI
    # create a repository under your account using the current directory name
    $ glab repo create
    
    # create a repository under a group using the current directory name
    $ glab repo create --group glab-cli
    
    # create a repository with a specific name
    $ glab repo create my-project
    
    # create a repository for a group
    $ glab repo create glab-cli/my-project
    Ответ написан
    Комментировать
  • Как удалить приватного репозитория GIT папку?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Грубо говоря на компе [папка1], а в репе лежит [папка1, папка2]

    Такого не может быть. Если вы не видите в рабочем каталоге папку, а она точно есть в ветке, значит в каталоге распакована другая ветка, либо каталог «не чист», т. е. содержит незакоммиченные правки.

    Если репозиторий частный, то проще удалить глючный коммит.
    git reset --hard HEAD^
    git push --force

    и сделать нормально новый
    Ответ написан
    Комментировать
  • Как узнать, от какой ветки или комита была рождена ветка

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вопрос «от какой ветки» бессмысленен в Git, потому что ветки создаются только от какого-то коммита.
    И тут нет такого маразма, как в Mercurial, что каждый коммит намертво привязан к какой-то ветке.
    Вот типичная ситуация:
    A - B - C - - - - J     [master]
         \
          D - E - F - G     [branch-A]
               \
                H - - I     [branch-B]

    А чтобы найти начало ветки, нужно определиться, какую другую ветку мы хотим считать родительской.
    Тогда первый общий коммит находится легко, как мы видим на примере работы GitHub.

    Например так
    diff -u <(git rev-list --first-parent child_branch) <(git rev-list --first-parent parent_branch) | sed -ne 's/^ //p' | head -1
    Ответ написан
    Комментировать
  • Как сменить аккаунт с которого идет пользования Git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    При коммите в Git не используются никакие аккаунты. Сами коммиты подписываются именем и мылом прописанным в конфиге командами
    git config --global user.name "Имя Фамилия"
    git config --global user.email user@mail.com

    Представиться можно как заблагорассудится, тут нет проверок и авторизаций.
    Бывает что эти данные прописаны в нескольких местах, тогда можно вывести все параметры командой
    git config --list --show-origin
    И увидеть в каком файле лишнее.

    Аккаунт гитхаба используется только при отправке данных туда. Тут надо уже смотреть как ты авторизовывался и сбрасывать сессию.
    Ответ написан
    Комментировать
  • Как, в моем случае, запушить файл с локального на удаленный репозиторий Git в другую ветку?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Зачем создавать новый репозиторий? Не надо изобретать сложные решения.
    # Если хочешь внести изменения во внешний репозиторий, то просто клонируй его к себе
    git clone https://github.com/github-name/test.git
    # Войди в рабочий каталог
    cd test
    # Переключись в нужную ветку
    git switch additional
    # Измени файл и закоммить его 
    git add "index.html"
    git commit -m "add new sections"
    # Отправь на GitHub
    git push
    Ответ написан
    Комментировать
  • Исполнитель pull request?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Назначить (assign) можно любого пользователя, у которого есть права на запись в репозиторий, либо того, кто прокомментировал PR. Сначала добавьте соавторов (collaborators) в репозиторий и раздайте им права. Потом сможете прикреплять к ним PR.
    Ответ написан
    Комментировать
  • Как скопировать код из git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Информация о репозитории не хранится в репозитории. В репозитории есть лишь коммиты с вашим кодом.
    Информация о связях между репозиториями хранится в конфигах. Ничто не мешает её редактировать без изменения самого репозитория. Не очень понятна задача. Зачем вам перемещать код в другой репозиторий? Зачем избавляться от старых коммитов? Но если надо:
    git clone старый_репо #скачать код
    git reset $(git commit-tree HEAD^{tree} -m "Init") # очистить историю
    git remote set-url origin новый_репо # подготовиться к отправке в новый внешний репо
    git push -u origin main # отправить текущую ветку и связать ветки
    Ответ написан
    Комментировать
  • Как заигнорить файл .gitignore?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Файл .gitignore не поможет игнорировать изменения в уже отслеживаемом файле.
    Но временно игнорировать изменения в файле можно командой:
    git update-index --assume-unchanged <file>
    Это защитит файл от случайной индексации и попадания правок в коммиты.
    Git будет считать что файл не изменялся, значит сами эти нежелательные правки не попадут в коммиты и, следовательно, не улетят в общий репозиторий. Коллеги не узнают что что мы отредактировали файл у себя локально.
    Ответ написан
    Комментировать
  • Как исправить ошибку?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Твоя ошибка в неправильной последовательности команд. Команда heroku create создаёт пустой репозиторий на хостинге Heroku и добавляет ссылку на него в локальный репозиторий. Но локального репозитория на тот момент ещё не было! В итоге remote с именем heroku теперь отсутствует и команда push не знает, куда отправлять бота.

    Сейчас тебе придётся вручную создать эту ссылку
    git remote add heroku https://git.heroku.com/cryptic-cliffs-15444.git

    Затем повторить отправку
    git push -u heroku main
    Ответ написан
    Комментировать
  • Как мне удалить последний коммит в git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Коммиты удалить нельзя, но можно переключить указатель ветки на один шаг назад
    git reset --hard HEAD~1
    Тогда последующий коммит «исчезнет» из истории.
    Но на скрине вы вообще не находитесь ни в какой ветке. Не забудьте создать ветку в этом месте, чтобы не потерять работу.
    Ответ написан
    Комментировать
  • Смерджил ветку с main, как отменить и вернуть как было?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    В интерфейсе GitHub есть специальная кнопка для этого.
    646ff3e1c8abf820618810.png
    Ответ написан
    3 комментария