Задать вопрос
  • 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

    Затем перелогиниться в системе.
    Ответ написан
  • Как запушить ветки на гитхаб?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Ветки создаются командой: git branch имя
    Всё! Никаких коммитов дополнительно создавать не надо. Главное чтобы репозиторий уже содержал хотя-бы один коммит, чтобы веткам было куда указывать (ветка это лишь указатель на коммит).

    Push отправляет конечно же не файлы а именно ветки. По умолчанию только одну ветку, которая текущая. Чтобы отправить сразу все, следует его об этом попросить: git push origin --all
    Ответ написан
    Комментировать
  • Как перенести папку Загрузки в дочернюю папку?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    Папка всегда создаётся если не существует, но корень диска уже существует. Его нельзя создать.
    Кликни кнопку По умолчанию во вкладке Расположение либо нажми Переместить и выбери новое место.
    На запрос переноса файлов ответь Нет, иначе он будет пытаться перенести всё, а нам это не надо, так как у тебя файлы из загрузок перемешались с файлами всего диска. Например, не надо переносить системную папку Recovery. Потом перенесёшь нужное руками.
    Ответ написан
    1 комментарий
  • Почему когда я включаю в биос леново uefi то при включении компьютера вылезает ошибка?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    Ошибка не при включении компьютера, а уже потом, при загрузке Windows.
    Диск разбит в режиме MBR, а UEFI требует разметку GPT.
    Перед тем как лезть BIOS, тебе надо сначала преобразовать диск в GPT.

    convert-system-disk-to-gpt.png
    Ответ написан
    Комментировать
  • Как удалить merge commit из проекта?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Если капитан любит линейную историю то легко можно избавиться от коммита слияния:

    git rebase origin/master databаse_branch

    Эта команда пересадит ветку databаse_branch на вершину актуальной ветки database, которая судя по всему связана с веткой master в вышестоящем репозитории origin. Коммит слияния исчезнет.

    Затем придётся принудительно обновить в вышестоящем репозитории эту ветку:

    git push --force

    И если кто-то её уже скачивал к себе, то попросить их обновиться через:

    git pull databаse_branch --rebase

    Как-то так. Я мог не угадать названия веток, так как по скрину не всё видно. Но принцип решения должен сработать.
    Ответ написан
    5 комментариев
  • Как правильно перенести ветку в Git на наследник предыдущего коммита?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Это называется перебазирование. Мы пересаживаем одну ветку на вершину другой ветки.
    git rebase deps react-app
    Но ветка react-app у тебя уже запушена, значит её придётся принудительно обновить во внешнем репозитории.
    git push --force
    И будь внимателен, если ветку react-app уже кто-то скачал себе, то ты их должен предупредить, чтобы они удалили её у себя и скачали заново. Либо обновили через git pull --rebase
    Ответ написан
    1 комментарий
  • Что делать если файл откатился во времени?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    Пользователи делятся на два типа. Те кто делает резервные копии и те, кто ПОКА этого не делает ))
    Обычно первый инцидент с потерей данных заставляет почесать репу и подумать как настроить резервирование.

    Есть ещё третий тип людей, которые делают две резервные копии в разных местах и периодически проверяют их целостность. Это называется правило 3-2-1-0.

    В вашем случае наверное придётся смириться с потерей и предпринять меры, чтобы этого не повторилось в будущем.
    Ответ написан
    Комментировать
  • Как настроить доступ к общей папке и подпапке?

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

    Правильно сделать так:
    Создаём сетевую шару и прописываем в ней доступ на запись для всех.
    Но реальные права на папки задаём уже непосредственно в свойствах самих папок. Они главнее.
    Тогда получится иметь возможность некоторым пользователям записывать в подпапку, но вышестоящие папки будут только на чтение.
    Ответ написан
    Комментировать