Задать вопрос
  • Как проверить ветку на актуальность с удаленным репозиторием?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    git fetch # предварительно скачать обновления
    git branch -vv #  показать список локальных веток 
    # в скобках покажет с какими вышестоящими ветками они связаны
    # если вышестоящая ветка удалена, то будет пометка gone
    git switch ветка # выборочно переключиться на ветку
    git status # посмотреть отставание от вышестоящей
    Ответ написан
    Комментировать
  • Как изменить имя компьютера показываемое в терминале?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    sudo scutil --set HostName mac
    Этого достаточно. Переустанавливать систему из-за такого пустяка точно не нужно ))
    После перезапуска терминала получим ruslan@mac ~ %
    Ответ написан
    4 комментария
  • Как правильно добавить в git-репозиторий папку выше по каталогу?

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

    Правильней будет перед перемещением папки .git воспользоваться командой filter-repo, чтобы пересобрать заново все предыдущие коммиты так, как будто репозиторий изначально лежал в корне.

    Исходная структура папок
    public_html
    └── wp-content
        ├── plugins
        │   └── my_plugin
        └── themes
            └── child-theme
                └── .git

    Подготовим старый репозиторий к перемещению
    git filter-repo --to-subdirectory-filter wp-content/themes/child-theme

    Получим такую структуру
    public_html
    └── wp-content
        ├── plugins
        │   └── my_plugin
        └── themes
            └── child-theme
                ├── .git
                └── wp-content
                    └── themes
                        └── child-theme


    Затем перенесём папку .git и всё остальное содержимое папки child-theme в корень сайта.
    Ответ написан
    Комментировать
  • Как изменить имя группы пользователя, которая отображается в терминале Mac OS?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    Это не имя группы, а название компьютера. Выполните команду:
    sudo scutil --set HostName MBP
    В новых окнах терминала будет уже новое имя.
    Ответ написан
  • Как отменить два последних комита без потери локальных изменений?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Очень просто. Вот один из способов.
    git reset --soft HEAD~2 # отменить два последних коммита
    # с опцией --soft состояние проекта в рабочем каталоге не изменится и ничего не потеряешь
    # и все локальные изменения после первого коммита автоматически поместятся в индекс
    git commit # создать коммит заново.


    В следующий раз вместо того, чтобы создавать дополнительный исправляющий коммит, просто пересоздавай предыдущий «плохой» коммит с помощью команды git commit --amend
    Ответ написан
    2 комментария
  • Ошибка при обновлении Android Studio. Как победить?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    Попробуй обновиться используя JetBrains Toolbox для Android Studio.
    И вообще этот инструмент сильно облегчает жизнь.
    Ответ написан
    1 комментарий
  • Как сбросить пуши гит в Android Studio?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Делай осмысленные сообщения коммитов. Эти шифровки с датами тебя только запутают.

    Сам факт, что при push ты видишь много коммитов, не является ошибкой. Не надо пытаться это исправить.
    Это лишь признак того, что твоя ветка не основана на актуальном мастере изначально и в процессе работы подгружались обновления, либо ты баловался c push --force что равносильно пересборке ветки заново через rebase.
    После такого принудительного push, на других компах уже недостаточно обычного pull. Придётся сделать pull в режиме --rebase, иначе получится каша из коммитов.

    Советую для работы с самим репозиторием параллельно использовать нормальный Git-клиент, который наглядно показывает дерево коммитов. SmartGit идеален для этого. Так будет намного понятнее что происходит.
    Ответ написан
  • Самый простой бесплатный способ включить NTFS HDD на MacOS?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    macFUSE не имеет собственного драйвера NTFS а предлагает подгрузить NTFS-3G, который глючный и тормозной.

    Мне нравятся дрова от Paragon которые ставятся бесплатно в пробном режиме.

    А с небольшим хаком триал можно сделать вечным.
    1. Ставим 2027 год в настройках MacOS.
    2. Устанавливаем, запускаем Парагон, берем триал 10 дней и не перезагружаемся.
    3. Отключаем Парагон, закрываем его. Возвращаем год в сегодняшний.
    4. Перезагрузка.
    5. Триал теперь вечный.
    Ответ написан
    3 комментария
  • Сервер с ESXI 6 не видит более 20 USB флешек, в чем проблема?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    Это ограничение самого хоста ESXi
    You can add up to 20 USB devices to a virtual machine, which is the maximum number of devices supported for a simultaneous connection to one virtual machine. The maximum number of USB devices supported on a single ESXi host for a simultaneous connection to one or more virtual machines is also 20.
    Ответ написан
    6 комментариев
  • Почему не удается запушить на Bitbucket?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Поправь ошибку в URL
    git remote set-url origin git@bitbucket.org:myacc/myproj.git

    Сообщение Permission denied сбивает с толку. Git при любой проблеме с передачей данных пишет Permission denied, хотя ошибка не в правах доступа, а в том, что Git просто не нашел репозиторий по указанному адресу. ...does not appear to be a git repository
    Ответ написан
    Комментировать
  • Как посмотреть адрес репозитория на bitbucket?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Коммитить можно только в локальный репозиторий, а во внешний репозиторий мы пушим.
    Ссылки на внешние репозитории показываются командой git remote -v
    Если в VSCode, то открой панель Source Control и выбери раздел Remotes. Там всё увидишь.
    Ответ написан
    Комментировать
  • Как связать ветки git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    А чтобы связать ветки используется такая команда
    git branch --set-upstream-to=<внешний-репозиторий>/<внешняя-ветка> <локальная-ветка>

    ---------
    Но ты всё усложняешь. Если зачем-то вручную создал ветку, то и связь настроить придётся руками. Из вопроса не до конца понятно, что конкретно ты сделал. Предположу что ты клонировал на сервер свой репозиторий.
    git clone <URL>
    Такая команда автоматически создаст remote с именем origin в которой будет храниться URL вышестоящего репозитория, распакует главную ветку origin/main в локальную ветку main и сразу создаст связь между ними.

    Ты хочешь распаковать какую-то другую ветку и делаешь это сложным путем?
    git branch feature # создать пустую ветку с именем feature
    git switch feature # переключиться в эту новую ветку
    # но свежесозданная ветка не связана ни с какой внешней, поэтому следующей командой
    # придётся указать откуда и что скачивать
    git pull origin feature # влить внешнюю ветку origin/feature в текущую локальную ветку
    # но проще ветки сначала связать
    git  branch --set-upstream-to=origin/feature feature
    # и тогда заработает простой pull
    git pull

    Но тебе всё это не нужно на самом деле!
    Достаточно после клонирования просто написать
    git switch origin/feature

    Одна строчка сделает всё вышеперечисленное. Создаст локально ветку с таким же именем, распакует в неё содержимое внешней ветки и создаст связь между локальной и внешней веткой.
    Если потом, находясь в этой ветке, выполнишь короткую команду git pull, то увидишь что всё связано и скачивается откуда надо.

    И даже можно сделать ещё проще. Уже во время клонирования сразу распаковать нужную ветку.
    git clone --branch feature <URL>
    Ответ написан
    1 комментарий
  • Git pull что от меня хочет?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    % git pull                                      
    У текущей ветки нет информации об отслеживании.
    Пожалуйста, укажите с какой веткой вы хотите слить изменения.
    Для дополнительной информации, смотрите git-pull(1).
    
        git pull <внешний-репозиторий> <внешняя-ветка>
    
    Если вы хотите указать информацию о отслеживаемой ветке, выполните:
    
        git branch --set-upstream-to=<внешний-репозиторий>/<внешняя-ветка> <локальная-ветка>

    Похоже ты добавил remote с именем MyBot, но забыл связать текущую ветку master с какой-либо вышестоящей.
    Поэтому Git не знает откуда скачивать и просит тебя указать откуда конкретно ты хочешь загрузить коммиты.

    Например так:
    # скачать ветку master из внешнего репозитория MyBot и слить с текущей локальной веткой
    git pull MyBot master

    Либо привязать к текущей ветке вышестоящую чтобы заработал pull без параметров:
    # связать локальную ветку master c внешней веткой master
    git branch --set-upstream-to=MyBot/master master
    Ответ написан
  • Как сделать git add всех папок и файлов проекта, кроме одной папки с ее внутренними папками и файлами?

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

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Такое может произойти из-за неправильной настройки символа переноса строки.
    Читай тут как исправить.
    Ответ написан
    Комментировать
  • Сложности после Удаление обновлений Windows?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    удалить обновления винды, так как именно после них места стает меньше

    Неправильный вывод. Обновления не добавляют файлы, а перезаписывают поверх.
    Сами по себе обновления не увеличивают размер Windows.

    Но свободное место уменьшается из-за того, что установочные файлы этих обновлений сохраняются в папке загрузок и сохраняются резервные копии файлов. которые были заменены. Вот их то и надо удалять.
    Желательно через стандартный инструмент, который уже есть — Очистка системы.

    Увидеть, что именно съедает место также помогает бесплатная утилитка WinDirStat
    Советую попробовать.
    Ответ написан
    1 комментарий
  • Не могу применить патч в ГИТе?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    error: main.py: already exists in index
    Это означает что патч пытается создать main.py, но он уже есть в твоём проекте.
    Сначала удали лишний файл, потом продолжи применять патч: git am --continue
    Ответ написан
  • Как синхронизировать проект с удалённым репозиторием?

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

    Итак: у нас есть два внешних репозитория и хочется их синхронизировать? Без проблем.
    Можно использовать локальный компьютер как вспомогательный.

    Я сделал
    git init
    git remote add origin ....


    Начало уже нелогичное. Ты же говоришь что уже выкачал репозиторий с сервера?
    Т. е. выполнил git clone <server1>
    Это уже создало копию репозитория и init не нужен. А ещё это автоматически создало ссылку origin тоже.

    Дальше можно поменять адрес origin на второй сервер
    git remote set-url origin <server2>

    И сразу увидим в git status есть ли отличия.
    Хотя нет, вру. Надо после смены адреса скачать к себе заново внешние ветки командой
    git fetch
    Только тогда будет что сравнивать.

    Примерно так. Это первое что пришло в голову и пожалуй грубовато. Можно придумать более аккуратную схему.

    Я бы лучше не удалял старый remote, а добавил новый. То что ты «скачал с сервера» пусть так и останется как origin. А «удалённый» репозиторий обозначим как upstream
    git remote add upstream <server2>
    git fetch upstream

    Тогда мы сможем сравнивать любые ветки и синхронизировать.
    Ответ написан
    Комментировать
  • Как форматировать .GITIGNORE для GITHUB?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Как форматировать .GITIGNORE для GITHUB?

    Правильный ответ на поставленный вопрос — никак.
    Файл .gitignore не используется в сервисе GitHub.

    Но после публикации Release
    Каждый раз в архиве пакета находятся все файлы из этого репозитория.

    А ты ожидал чего-то другого? Что ты поместил в ветку, то и увидишь в релизе.
    Добавление масок файлов в .gitignore не удаляет никакие файлы из проекта.
    Хочешь удалить файл — удали его непосредственно из ветки репозитория.

    Что означают строки с символами <<<<<<< и >>>>>>> в .gitignore?

    Конкретно в .gitignore они ничего не означают.
    Это так обозначаются конфликт слияния, который у тебя возник в этом коммите и ты не стал его разрешать и закоммитил как есть. Так делать не стоило. В репозитории не должно быть неразрешенных конфликтов.
    Тут у тебя на самом деле нет конфликта. Просто удали строки с маркерами и другие мусорные строки.
    <<<<<<< OURS 
    =======
    >>>>>>> THEIRS

    файл XML должен загружаться по URL но не должен попадать в архив.

    Используй для сайта и для архива с релизом разные ветки и будет тебе счастье. По умолчанию сайт GitHub Pages хранится в ветке gh-pages. Зачем ты свалил всё в кучу и используешь ветку master и для сайта и для самого проекта?
    Ответ написан