Ответы пользователя по тегу Git
  • Как readme.md оставить только на гитхаб?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Добавление файла .gitignore не удаляет файл из репозитория. Оно лишь предотвращает автоматическое добавление файла в репозиторий при ближайшем индексировании (например через git add .), но даже игнор не запрещает нам начать отслеживать любой файл просто принудительно добавив его в индекс git add <file>

    Однажды добавив файл в репозиторий, вы уже не сможете его оттуда удалить. Это если понимать под репозиторием всю его базу со всей историей.

    Но файл можно удалить из текущего состояния ветки по умолчанию. Это то, что мы видим войдя на страницу проекта в гитхабе в списке файлов. И то, что находится в рабочей копии на компе.

    Если файл мешает на локальной машине, то для локальной работы используйте другую ветку. Не ту, что показывается по умолчанию на гитхабе. И удалите файл в этой ветке.
    Файл разумеется не исчезнет из истории локальной копии репозитория, но пропадёт из локальной рабочей копии файлов проекта и не будет мозолить глаза.
    Ответ написан
    Комментировать
  • Как сделать merge в ветку git-flow?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    1) По умолчанию, git push отправляет на сервер только одну ветку — текущую.
    Чтобы отправить ветку developer, сначала переключитесь на неё.
    git checkout developer
    git push -u

    Либо можно не переключаться, но явно указать, что и куда отправить
    git push -u origin developer
    Эта команда говорит: возьми ветку developer и отправь в репозиторий origin.
    Флаг -u нужен чтобы сразу связать локальные ветки с создаваемыми удалёнными.

    Хотя можно сказать гиту, чтобы он отправил сразу все локальные ветки
    % git push -u --all 
    Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
    To https://github.com/.../repo.git
     * [new branch]      developer -> developer
    Ветка «developer» отслеживает внешнюю ветку «developer» из «origin».
    Ветка «feature/feature_some1» отслеживает внешнюю ветку «feature/feature_some1» из «origin».
    Ветка «feature/feature_some2» отслеживает внешнюю ветку «feature/feature_some2» из «origin».
    Ветка «master» отслеживает внешнюю ветку «master» из «origin».

    Но если у вас есть локальная ветка, которую вы не хотите светить на сервере, то флаг -all не подойдет ))

    2) Синтаксис названия feature/feature_some1 это не две ветки, feature и вложенная feature_some1
    Это всё равно одна ветка. Но в графических клиентах такие ветки отображаются как вложенные, для удобства.
    Создав вторую ветку с именем feature/feature_some2 получим такую картинку

    604841b7bfdc2368381419.png
    Но никакой ветки feature не существует.
    % git branch    
      developer
      feature/feature_some1
    * feature/feature_some2
      master


    3) Как сделать merge в ветку developer?
    Перед слиянием убедиться, что рабочая копия не имеет незакоммиченных изменений.
    Либо дропните незафиксированные правки либо создайте коммит с ними.
    Иначе git не знает что с ними делать и выдал вам ошибку.
    Ответ написан
    1 комментарий
  • Можно ли коммитить в удалённый репозиторий без SSH-ключа в Qt Creator?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Коммитить напрямую в удалённый репозиторий невозможно, даже с паролем.
    Наверное имелся в виду Push?
    Для GitHub лучше сгенерировать персональный токен. Возиться с SSH не обязательно.
    https://docs.github.com/en/github/authenticating-t...
    Тем более с 13 августа 2021 пароли перестанут работать.
    Ответ написан
  • Как запушить в новый репозиторий?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Прежде чем подключать новый, надо удалить ссылку на старый.
    git remote remove origin
    Затем добавляем ссылку на новый
    git remote add origin https://github.com/...
    Привязываем ветку к новому репозиторию
    git push --set-upstream origin main
    Ответ написан
    Комментировать
  • Как удалить все не нужные коммиты и локал и на сервере, как буд-то их и не было?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    На скрине видим что локально всё получилось. Осталось отправить это на сервер, но вы сможете это сделать только принудительно.
    git push origin --force
    Тогда указатель ветки origin/master тоже вернётся в "Initial Attempt".
    Сами коммиты никуда не удаляются на самом деле. Вы их просто перестанете видеть, так как на них нет ссылок.
    Окончательно они удалятся после "сборки мусора".
    Ответ написан
    Комментировать