• Как сбросить пуши гит в 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 и для сайта и для самого проекта?
    Ответ написан
  • Можно ли создать bat файл который будет откатывать изменения?

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

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Просмотр истории
    Если вы укажете каталог или имя файла, вы ограничите вывод только теми коммитами, в которых были изменения этих файлов. Эта опция всегда указывается последней после двойного тире (--), чтобы отделить пути от опций:
    git log --name-status --graph --oneline --since=4.months -- ToModel*.php
    Ответ написан
    4 комментария
  • Могу ли я перенести Windows 10 с hdd на ssd без установлений дополнительных программ?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    Встроенными средствами Windows это пока не сделать. Нужны сторонние утилиты. Лет 20 назад мы использовали Partition Magic. Потом появились утилиты от Acronis. Но они больше не развиваются.
    Сейчас безусловный фаворит — AOMEI. Там есть бесплатная версия в которой выполнишь команду Migrate OS to SSD. Утилиту можно установить в системе, либо использовать загрузочную флешку.
    Ответ написан
    7 комментариев
  • Как добавить в .gitignore такие файлы как gulpfile.js, package-lock.json и package.json?

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

    Когда не хочешь видеть файл в репо, просто удали его физически и сделай коммит.

    Если же файл нужен в рабочем каталоге, но ты не хочешь его светить в репозитории, то удали файл только из индекса командой git rm --cached имя_файла и закоммить это.
    Ответ написан
    1 комментарий
  • Почему мне VSC, когда я пушу на гитхаб ее средствами, предлагает сразу после пуша сделать пулл?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Скорее всего pull предлагает сделать не после push, а после нажатия кнопки синхронизации в VSCode.
    До того как собственно сделает сам push, спрашивает «а не хотите ли сначала обновиться?»
    Более точный ответ мы увидим в консоли, смотри там что происходит.
    Скачивать ветку заново сразу после отправки действительно нет никакого смысла.
    Ответ написан
    Комментировать
  • Как убрать выбор спец. символов при долгом зажатии клавиши мак?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    Много лет использую macOS и только сейчас узнал что такая замечательная функция тут тоже есть ))

    Сначала пришлось узнать как её включить
    defaults write -g ApplePressAndHoldEnabled -bool true

    Ну а выключается соответственно командой
    defaults write -g ApplePressAndHoldEnabled -bool false

    Затем перелогиниться в системе.
    Ответ написан