Git pull выдает следующую ошибку: роковая эта операция должна выполняться в рабочем дереве - PullRequest
0 голосов
/ 27 декабря 2018

Существует только одна ветвь.Я уже отправил файлы из локальной системы в удаленное хранилище.

В удаленном репо я делаю git pull Как исправить фатальную ошибку: this operation must be run in a work tree

1 Ответ

0 голосов
/ 27 декабря 2018

В удаленном репо я делаю git pull ...

Точнее, у вас есть пустой репозиторий (созданный с помощью --bare) на сервере.Затем, либо в ловушке (такой как ловушка после получения) на сервере, либо войдя на сервер, вы заходите в этот пустой репозиторий и запускаете git pull.

Это не удается, потому что git pull требует рабочего дерева для работы.Это потому, что git pull означает:

  1. run git fetch, затем
  2. запустить вторую команду Git.

Первая команда - git fetch - может использоваться в пустом хранилище.Второй, который обычно git merge, не может быть использован в пустом хранилище.Вы можете указать Git использовать git rebase вместо git merge, но это также нельзя использовать в чистом хранилище.

Хотя есть и другие (довольно сложные) способы справиться с этим непосредственно на сервере,Обычный лучший способ: не делайте этого. ? Серверный репозиторий должен просто служить: он там для приема push-операций, которые помещают в него новые коммиты, и для обслуживания операций клонирования, которые получаютвсе коммиты из него.

Если вы хотите сделать что-то сложное, например извлечь из нескольких репозиториев Git и объединить различные коммиты, сделайте это в клоне.Как только вы разберетесь с результатом - некоторые слияния являются сложными и запутанными и требуют большого ручного вмешательства, отсюда возникает необходимость в рабочем дереве, в котором можно выполнять работу - сделать коммит из результата и отправить коммит на сервер,Сложная работа происходит в обычном (не голом) хранилище, которое контролирует человек.Простые вещи, ориентированные на сервер, происходят в простом пустом хранилище на сервере.

Обратите внимание, что весь смысл пустого хранилища в том, что он действует как простой получатель для git push.В непустом хранилище с его рабочим деревом может быть кто-то, кто работает над ним.Если бы он получил толчок , пока человек работает, работа человека была бы не синхронизирована с базовым хранилищем.Когда человек совершит свою работу, это фактически отменит полученный толчок.Эффект примерно эквивалентен использованию git revert с опцией -n, за исключением того, что когда люди на самом деле do используют git revert -n, они знают это, но когда они неосознанно возвращают толчки, они не1049 * знают это: у них нет возможности узнать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...