Ответы пользователя по тегу Git
  • Как залить изменения в определеную папку на GitHub?

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

    В вопросе чувствуется какой-то подвох.
    Что именно у вас не получается?
    Что имелось в виду под
    Разделили по папкам

    Когда вы делате pull из main, то эти папки не появляются у вас локально?

    git commit -m "first commit"
    git push -u origin main
    это довольно странные команды. Они для случая когда вы заливаете новый проект в пустой репозиторий на гитхабе. Но у вас на гитхабе видимо уже есть проект. Чтобы внести изменения вы должны наверное клонировать с гитхаба, создать свою ветку и в ней изменить, и отправить изменения обратно.
    И делается это точно не теми командами которые вы процитировали. Рекомендую вам почитать учебник по гиту, а не вбивать непонятные заклинания в терминал в надежде на чудо.
    Ответ написан
    Комментировать
  • Как можно решить конфликты?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вы неправильно понимаете суть веток. Это не «коробочки» с задачами, а указатели на дерево состояний проекта.

    Перед запуском тестов вы должны подгрузить из main все обновленияк к себе: git merge main
    Так вы заранее решите конфликты и их не будет когда уже вашу ветку будете вливать в main. И тесты будут прогоняться на актуальной кодовой базе, а не на устаревшей.
    Ответ написан
    Комментировать
  • Как правильно добавить файлы/папки в .gitignore?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Нет, каталог Applications не нужно коммитить в Git. Судя по скрину, вы уже закоммитили его. Удалите каталог из репозитория и пропишите его в игнор, чтобы снова не закоммитить случайно.

    И переформулируйте вопрос. Ответ на вопрос «как правильно добавить в игнор» уже содержится на вашем скрине.
    Ответ написан
  • Я запушил в ветку на GitHub. Отображается "Updated 6 hours ago", но в проекте ничего не обновлено. Что делать?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Сообщение говорит о том, что последний коммит был сделан шесть часов назад. Даже если Push сделан вот только что.
    Если вы что-то делали в рабочем каталоге и забыли закоммитить, то push эту работу никуда отправлять не будет.
    Отправляется только то, что закоммичено. Сам рабочий каталог не находится в репозитории.
    Ответ написан
    Комментировать
  • Как авторизоваться в GitFlic через клиент SpckEditor?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    SpckEditor поддерживает только персональные токены, но GitFlic похоже не умеет с ними работать. Там OAuth-авторизация.. Если вы только начинаете изучать Git, то попробуйте использовать что-то стандарное, типа GitGub или GitLab. Там можно создать токены персонального доступа. Токены развертывания это другое.
    Ответ написан
  • Как удалить commit?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    # Откатиться на шаг назад
    git reset HEAD~1
    # Удалить из проекта ненужное
    git rm -r --cached "node_modules" # это точно мусор
    git rm -r --cached "src" # вы уверены что это не часть проекта?
    # Создать коммит заново
    git commit 
    # Отправить изменения
    git push --force

    Затем создать .gitignore, чтобы не повторять случайно ошибку.
    Ответ написан
    1 комментарий
  • Как настроить VSCode чтобы в терминале выводилась ветка Git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вопрос не имеет отношения к самому VSCode, так как оболочка zsh внутри редактора точно такая же, как и внутри приложения Terminal. Вам нужны плагины к zsh, настраивающие внешний вид приглашения командной строки и добавляющие другие удобства.

    6411fed9a52ef195342570.png
    Мне например понравился fig.io с плагином Powerlevel10k.

    Настроил внешний вид под себя. Показывает ветку и её состояние, текущее время, время выполнения и код завершения предыдущей команды. Название виртуального окружения Python если оно активно. Удобно подсвечивает название текущего каталога и текущую операционную систему. Само приглашение двухстрочное, чтобы не смешивать вводимую команду с остальной инфой. Когда название команды или программы написано без ошибок и такая программа существует в системе, то оно подкрашивается зелёным. Это гарантирует что мы не получим ошибку «Command not found».
    Ответ написан
  • Почему проект React не добавляется в Git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Команда инициализации react-приложения уже инициализирует репозиторий внутри каталога weather-app. Вам не нужно было инициализировать ещё один репозиторий в вышестоящем каталоге.
    Желтый текст вам об этом и напоминает.
    Лишнюю папку .git следует удалить. Если не удаётся через терминал, то закройте WebStorm и удалите вручную через проводник. Скорее всего каталог открыт в программе, поэтому и не даёт удалить.
    Ответ написан
    Комментировать
  • Как сделать «Commit and Push» из PhpStorm в gitlab?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Пароль нигде не посмотреть. GitLab не позволяет аутентифицироваться по паролю при использовании протокола SSH. Вместо этого GitLab использует криптографию с открытым ключом для аутентификации по SSH.

    Чтобы аутентифицироваться по SSH с помощью GitLab, вам нужно сгенерировать пару ключей SSH на локальной машине и добавить открытый ключ в свою учетную запись GitLab. После добавления вашего открытого ключа в учетную запись вы можете клонировать репозитории GitLab и выполнять другие операции Git с использованием протокола SSH, не запрашивая пароль.

    Добавление ключа SSH в свою учетную запись GitLab

    Если не хочется возиться с ключами — используйте HTTPS-протокол.
    Ответ написан
  • Не все файлы из ветки пулятся, как исправить?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Скачиваются всегда все файлы, но вам нужно их ещё вытащить из репозитория в рабочий каталог. Если вы что-то ранее удалили в рабочей копии, то команда pull это не восстановит. Pull не предназначен для этого.
    Сделайте git reset --hard чтобы очистить рабочий каталог от ваших незакоммиченных изменений/удалений и увидеть что на самом деле сейчас в ветке.
    Ответ написан
    Комментировать
  • Как называется такая практика и является ли она приемлемой?

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

    Создать коммит Х2, который отменит все новые изменения master можно например так
    # Вредоносные действия делаем в своей ветке, 
    # так как не можем коммитить напрямую в master
    git switch feature
    # Якобы подтягиваем изменения из master, но по факту отменяем.
    git merge --ff $(git commit-tree -p master -p feature1 -m "X2" feature1^{tree})
    # Отправляем Pull Request обратно в master
    Но зачем? Практика перезатирания чужих правок ненормальна, если только это не исправление ошибок.

    Чтобы бороться с вандализмом используется рецензирование, когда Pull Request не вливается в основную ветку пока другие люди не просмотрят изменения и не одобрят.
    Ответ написан
    4 комментария
  • Как откатить репозиторий на GitHub?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Локально откатили правильно, о чем статус и сообщает. Только нужно наверное было делать reset --hard, чтобы рабочий каталог тоже откатился. Вам осталось только отправить это на гитхаб.
    Ответ написан
    Комментировать
  • Ошибка при создании архива в Git. В чём причина?

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

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Ветка меняет название только если вы сами её переименуете командой переименования.
    И эта команда не reset.
    Ответ написан
    Комментировать
  • Как исправить ошибку Failed to push some refs?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Сообщение говорит о том, что вы просите отравить ветку master в репозиторий origin, но в вашем репозитории нет ветки с таким названием. Гит не нашел что отправлять и сказал об этом. Проверьте какие ветки у вас есть и в куда вы коммитили git branch -vv
    Ответ написан
    Комментировать
  • Git fatal: unable to access 'https://github.com/Preiwer/QWERY-landing.git/': The requested URL returned error: 403 как это решить?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вы не авторизовались на GitHub. Либо авторизовались неправильно.
    Если уставлен актуальный официальный Git, то при первом push должно было спросить как вы хотите авторизоваться, через браузер или через токен.
    Если сразу спрашивает имя и пароль, то вводить надо не тот пароль, с которым вы заходите на сайт, а вставлять токен.
    Ответ написан
  • Новая авторизация на Github по новым правилам, как настроить?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Этот вопрос неоднократно поднимался тут. Почему вы не пользуетесь поиском?

    Поменялась схема https-авторизации. Чтобы заново авторизоваться, нужно лишь отменить предыдущую авторизацию. И при повторном push ввести полученный на гитхабе «ключ/токен» вместо пароля. Но я бы посоветовал просто авторизоваться через браузер, это проще.
    Ответ написан
    Комментировать
  • Как выйти из гитхаба?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Параметры вашей подписи коммитов user.name и user.email вообще никакого отношения к авторизации не имеют. А сама она не хранится в конфиге гита и к самому гиту никакого отношения не имеет. Вы же не имя и мыло вводили когда авторизовались? В гите вообще нет понятия авторизации. Вы авторизуете на внешнем сервере не гит, а пользователя компьютера. За хранение паролей отвечает credential manager, а сами пароли хранятся в недрах операционной системы, независимо от гита и хорошо спрятаны.

    «Забыть» авторизацию текущего пользователя можно такой командой.
    echo "url=https://github.com" | git credential reject


    Также можно очистить вашу подпись для текущего пользователя компьютера
    git config --unset user.name
    git config --unset user.email
    Но это не имеет отношения к авторизации
    Ответ написан
    Комментировать
  • Почему команда git show открывает файлы директории в Vim?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Команда git-show не открывает файлы, а показывает содержимое коммита.
    И не в Vim, а в программе-пейджере less
    Ответ написан
    Комментировать
  • Как исключить из .gitignore некоторые файлы в подкаталоге?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Промежуточные подкаталоги тоже нужно добавлять в исключения
    /parent/folder/*
    !/parent/folder/child
    /parent/folder/child/*
    !/parent/folder/child/css
    /parent/folder/child/css/*
    !/parent/folder/child/css/something.css
    !/parent/folder/child/js
    /parent/folder/child/js/*
    !/parent/folder/child/js/something.js

    Но с такими цепочками правил есть смысл заморачиваться только ради исключения целых подкаталогов. А отдельные файлы можно начать отслеживать принудительно используя опцию --force
    Ответ написан
    Комментировать