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

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    1. Клонировать себе на комп git clone
    2. Поменять автора коммитов используя git filter-repo
    3. Отправить в новый пустой репозиторий git push -all <URL_нового_репо>


    git filter-branch заявлен устаревшим и небезопасным
    Ответ написан
    Комментировать
  • Почему не работает /public/css/app.css и /public/js/app.js в .gitignore?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    modified:

    Это означает что файлы уже добавлены в репозиторий и отслеживаются.
    А gitignore имеет смысл только для неотслеживаемых файлов, т. е. которые ещё не добавлены и мы не хотим их добавлять. Удалите файлы из репозитория и увидите, то игнор работает.
    Ответ написан
    Комментировать
  • Как залить проект на сервер через git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Push обновляет ТОЛЬКО в репозиторий, но сама рабочая папка с файлами остаётся нетронутой. Чтобы она обновилась, нужно на сервере актуализировать её вручную
    git reset --hard
    Ответ написан
    Комментировать
  • Почему Git удаляет файлы, которые вышли из под его контроля?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Файл удаляется, потому что история содержит коммит с его удалением.
    Чтобы не потерять файлы на других серверах, обновляем их немного хитрее.
    git fetch # загрузить обновления репозитория
    git switch master # проверяем, что мы в нужной ветке
    git reset origin/master # переместить HEAD на актуальное состояние
    # сам рабочий каталог при этом не изменится, 
    # так как по-умолчанию используется режим reset --mixed
    git reset --hard # теперь можно актуализировать рабочий каталог
    # файлы указанные в .gitignore не изменятся и не удалятся
    Ответ написан
    Комментировать
  • Как вернуть отображение Git в статус бар Sublime Text?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Проверьте в настройках параметр show_git_status
    Ответ написан
    Комментировать
  • Текущее состояние проекта в phpstorm не соответствует положению HEAD?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    git reset --hard приведёт состояние проекта в рабочем каталоге в соответствие с HEAD
    Ответ написан
    Комментировать
  • Как удалить файлы из pull request?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Если отменить изменения файла и закоммитить, то он исчезнет из PR
    git restore <FILE> origin/target_branch
    Ответ написан
    Комментировать
  • Как прекратить отслеживание изменений в файле?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Попросить гит временно не замечать изменений в файле config_file.
    git update-index --assume-unchanged config_file
    Ответ написан
    Комментировать
  • Почему изменения сделанные в файлах под гитом не отображаются на сайте?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вы внесли изменения только в репозиторий, но не актуализировали сам рабочий каталог репозитория, в котором лежит сайт. git status вам об этом и сообщил.
    Очистить рабочий каталог от ненужных изменений можно командой
    git reset --hard
    Согда файлы синхронизируются и репозиторием.
    Ответ написан
    Комментировать
  • Как перенести несколько коммитов из одной ветки в другую?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Никакие коммиты перемещать не нужно. Они уже часть ветки task автоматически, так как являются родителями её коммитов. Единственное что потребуется в такой ситуации — откатить указатель ветки master на два коммита назад, раз мы работали там по ошибке.
    git switch master
    git reset --hard HEAD~2
    Ответ написан
    Комментировать
  • Как синхронизировать закачаный проект с репозиторием на Bitbucket?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    git init 
    git remote add origin https://bitbucket.org/username/reponame.git
    git fetch # собственно скачивание репозитория
    git reset origin/master # поставить указатель в нужное место
    git branch -u origin/master master # настроить связь веток

    Без скачивания, репозиторий не появится локально. Рабочая папка с текущим состоянием проекта это не репозиторий.
    Ответ написан
    Комментировать
  • Как синхронизировать локальные файлы с удалённым репозиторием?

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

    Но проще использовать ссылку https, чтобы не возиться с ключами.

    git init # инициализировать репозиторий в папке тестового проекта
    git remote add origin <URL> # указать адрес вышестоящего репозитория
    git fetch # скачать вышестоящий репозиторий
    git reset origin/master # установить указатель на ветку master
    # существующие локальные файлы в рабочем каталоге измениться не должны
    git branch --set-upstream-to=origin/master master 
    # связать master с origin/master


    Вы делаете почти правильно
    git fetch origin
    -- ошибок не выводит, но и результата никакого не даёт

    Потому что вы ранее уже сделали pull, который включает в себя fetch
    Если ничего не выводит, значит ошибок нет и изменений в origin тоже нет.

    fatal: 'origin/master' does not appear to be a git repository

    Гит говорит, что origin/master не является корректным адресом репозитория.
    Правильный синтаксис: git pull origin master

    И не называйте пожалуйста GitHub гитом.
    Ответ написан
    Комментировать
  • Как в Git перенести закоммиченые изменения из одной ветки в другую?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вопрос поставлен слишком абстрактно. Толком не понятно что требуется сделать и с какой целью. Слишком много ситуаций можно придумать под эту формулировку.

    Лучше почитайте базовые руководства, тогда поймёте как гит работает и перестанете задавать такие простые вопросы.
    Начните отсюда https://githowto.com/ru
    Потом потренируйтесь https://learngitbranching.js.org/?locale=ru_RU

    А пошаговые инструкции тут не работают, ввод каких-то непонятных команд в терминале не поможет научиться работать и скорее только угробите проект.
    Ответ написан
    Комментировать
  • Как правильно пушить локально в non-bare репозиторий?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    «Пушить локально» это масло масляное. Мы всегда пушим локально, но во внешний (remote) репозиторий. Понятия внешний и локальный тут относительны, так как все репозитории в Git равноправны и могут обмениваться коммитами в любых направлениях. Причём репозитории запросто могут лежать на локальном компьютере. Репозиторий откуда мы выполняем команды push/fetch/pull называется «локальным», а тот откуда/куда передаём данные называется «внешним». Я не люблю перевод слова remote как удалённый, потому что потом возникают дикие конструкции типа «удалить удалённый», которые ломают мозг.

    Выибивает ошибку что non-bare репозиторий.

    Вы невнимательно читаете текст ошибки. Там ключевое слово current branch in a non-bare repository, т. е. нельзя пушить в текущую ветку, которая в данный момент распакована в рабочем каталоге. В голом репозитории (bare) нет рабочего каталога, поэтому такой проблемы не возникает.

    Как правильно синхронизировать ветки репозиториев? Способов много
    1. Перед push зайти во «внешний» репозиторий и переключиться в другую ветку.
    2. Вместо push из «локального» репозитория можно делать pull, находясь во «внешнем».
    3. Можно заставить Git игнорировать проблему, но рабочий каталог «внешнего» репозитория просто не будет актуализироваться сам, нужно будет потом там вручную делать git reset --hard
    4. Сделать целевой репозиторий голым, но тогда вы не сможете в него коммитить напрямую.
    Ответ написан
    Комментировать
  • В удаленный репозиторий на гитхабе добавляются не файлы из локального репозитория, а вся папка с репозитрием?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Репозиторий нужно создавать ВНУТРИ каталога с проектом, а не в корне профиля пользователя.

    вместо нормальной структуры папок в удаленном репозитории: proj/файлы проекта

    Это вовсе не нормальная структура. Сама папка proj не должна отображаться в проекте.
    Ответ написан
    Комментировать
  • Git - что я делаю не так?

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

    Либо не обращайте внимания на рабочий каталог, либо сразу инициализируйте репозиторий на сервере в режиме bare, т. е. без рабочего каталога. Именно так работает GitHub или BitBucket
    git init --bare
    Ответ написан
  • Как исключить файлы из коммита?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Если git logпоказывает файлы, значит вы их уже добавили в репозиторий ранее и нужно удалять их оттуда. Если это было сделано в последнем коммите, то просто
    git rm "delete_file_old/*"
    git commit --amend

    Если добавили в старых коммитах, то через git filter-repo
    Ответ написан
    Комментировать
  • Как удалить файл с кириллическим символом из коммита?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    git rm "путь/import_1*.csv"

    А вообще, никогда не было проблем с именами в юникоде, даже в Windows.
    Но я предпочитаю отключать экранирование при выводе
    git config --global core.quotePath false

    И работать проще в SmartGit, чем в голой консоли. Особенно если файлы с русскими именами, да ещё в какой нибудь древней кодировке Windows-1251.
    Ответ написан
    Комментировать
  • Как настроить ветку гита при пуше в PhpStorm?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    У вас сбились связи между локальными и внешними ветками. Я не нашел как починить это через интерфейс JetBrains, но оно легко чинится через терминал.
    ➜ git branch -vv
    * main 0e02250 [origin/dev] Commit Message
    
    ➜ git push -u origin main:main
    branch 'main' set up to track 'origin/main'.
    Everything up-to-date
    
    ➜ git branch -vv              
    * main 0e02250 [origin/main] Commit Message

    Чтобы PhpStorm увидел изменения, наверное придётся его перезапустить.
    Ответ написан
    Комментировать
  • Как клонировать проект с GitHub через интерфейс Xcode?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Комментировать