Задать вопрос
  • Как на GitHub поменять целевую ветку для PR?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега GitHub
    Автоматизатор
    Нажав кнопку Edit, вы сможете не только название PR отредактировать, но и сменить целевую ветку.
    645acf0001bd8336037858.png
    Ответ написан
    Комментировать
  • Почему не получается запушить репозиторий на GitHub?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вангую, что ветка main не содержит ни одного коммита: src refspec main does not match any. Отправлять просто нечего.

    Вы, наверное, вслепую выполнили заклинания git add и git commit, но проигнорировали предупреждение, в котором говорилось, что у вас там, наверное, подмодуль в каталоге my-app и он должен отслеживаться в собственном репозитории. Команда git status должна подтвердить мою догадку.

    Разве корень проекта не должен находиться в каталоге my-app?

    Удалите ваш ещё пустой репозиторий (папку .git), который вы создали в каталоге react-code, и откройте в WebStorm каталог my-app, в котором репозиторий уже есть. Он инициализировался, когда вы делали create-react-app.

    Либо удалите папку my-app/.git и тогда сможете закоммитить каталог my-app в ваш текущий репозиторий. Предварительно попросив «забыть» про фиктивный подмодуль git rm --cached "my-app"

    А сейчас Git видит вложенный репозиторий в каталоге my-app и игнорирует всё его содержимое, думая что там у вас подмодуль.
    Ответ написан
    Комментировать
  • Как отменить checkout git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    git checkout -
    Отменит предыдущий checkout
    Ответ написан
    Комментировать
  • Как разрабатывать игру вместе с другом?

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

    Есть официальная книга Pro Git, она сложновата для новичков, но её тоже стоит прочитать позже.
    Ответ написан
    Комментировать
  • Как добавить отдельную папку в новую ветку?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Решение предельно простое. Допустим у нас есть проект в котором ветке main лежат две папки: client и server

    Команда git subtree push --prefix client origin client отправляет ваш клиент из подкаталога client в локальном репозитории в ветку client внешнего репозитория origin.

    Конкретно в этом случае:

    git subtree push — запускает команду Git для отправки изменений из подкаталога во внешний репозиторий.
    --prefix client — указывает на подкаталог client, который необходимо отправить во внешний репозиторий.
    origin — имя внешнего репозитория, куда будет отправлено содержимое подкаталога.
    client — название ветки, в которую будут отправлены изменения.

    В результате выполнения этой команды, содержимое подкаталога client будет отправлено в ветку client внешнего репозитория origin, как если бы корень репозитория изначально был в каталоге client, т. е. в ветке не будет самого каталога client, там будет только его содержимое.

    Аналогично с сервером git subtree push --prefix server origin server
    Ответ написан
    Комментировать
  • Почему каталог с React-приложением не загружается на GitHub?

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

    Ваша проблема в том, что при изначальном создании приложения командой create-react-app сразу инициализируется Git-репозиторий внутри каталога с приложением. Если вы решили не работать в этом репозитории, а отслеживать изменения client и server в другом общем репозитории, то вам нужно удалить тот вложенный репозиторий из папки client. Иначе гит будет игнорировать изменения там и подумает что это вы подключили подмодуль (submodule).
    # удалите папку .git, которая внутри каталога client
    rm -rf "client/.git"
    # скажите гиту, чтобы он забыл, что перед этим видел там вложенный репозиторий 
    git rm --cached "client/"
    # теперь получится добавить приложение в ваш основной проект
    git add "client/"
    Ответ написан
    Комментировать
  • Как связать локальный проект с другим репозиторием на GitHub?

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

    Если же хочется непременно объединить две истории, то вам нужно предварительно подгрузить историю с гитхаба к себе, и только потом отправлять.

    Например пересадить вашу локальную ветку поверх того коммита с гитхаба
    git pull --rebase origin main

    Либо через коммит слияния
    git pull --allow-unrelated-histories origin main
    Ответ написан
    9 комментариев
  • Как залить изменения в определеную папку на 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 эту работу никуда отправлять не будет.
    Отправляется только то, что закоммичено. Сам рабочий каталог не находится в репозитории.
    Ответ написан
    Комментировать
  • Почему не отображает картинки, анимации, js-файл на GitHub Pages?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега GitHub
    Автоматизатор
    Зачем вы лезете в папку src? Там же исходники, а не собранный проект.
    Сделайте сборку не в dist/, а в папку docs/
    При активации GitHub Pages выберите источником не корень проекта /, а папку docs/
    Тогда заработает нормальная ссылка https://sivlvy.github.io/
    642c65afea106486327507.png
    Ответ написан
    Комментировать
  • Как авторизоваться в 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, чтобы рабочий каталог тоже откатился. Вам осталось только отправить это на гитхаб.
    Ответ написан
    Комментировать