fatal this operation must be run in a work tree как исправить

Git pull throws the below error: fatal this operation must be run in a work tree

Only one branch exists. I have already pushed files from my local system to remote repo.

At remote repo i am doing git pull How to fix fatal error: this operation must be run in a work tree

fatal this operation must be run in a work tree как исправить. Смотреть фото fatal this operation must be run in a work tree как исправить. Смотреть картинку fatal this operation must be run in a work tree как исправить. Картинка про fatal this operation must be run in a work tree как исправить. Фото fatal this operation must be run in a work tree как исправить

fatal this operation must be run in a work tree как исправить. Смотреть фото fatal this operation must be run in a work tree как исправить. Смотреть картинку fatal this operation must be run in a work tree как исправить. Картинка про fatal this operation must be run in a work tree как исправить. Фото fatal this operation must be run in a work tree как исправить

1 Answer 1

This fails, because git pull requires a work-tree in which to work. That’s because git pull means:

While there are other (rather complicated) ways to deal with this directly on the server, the usual best way is: don’t do that. 😀 A server repository should simply serve: it’s there to receive push operations, which put new commits into it, and it’s there to service clone operations, which get all the commits out of it.

If you want to do something complicated, such as fetch from multiple Git repositories and merge various commits, do that in a clone. Once you have sorted out the result—some merges are complex and messy and need a lot of manual intervention, hence the need for a work-tree in which to do work—make a commit from the result, and push the commit to the server. The complex work happens in a regular (non-bare) repository, which has a human supervising it. The simple server-oriented stuff happens in a simple bare repository on the server.

Источник

Почему я получаю сообщение » fatal: эта операция должна выполняться в рабочем дереве?»

тогда я получаю ошибку:

Я не уверен, что пошло не так, но c:git в каталоге есть файл конфигурации, который говорит:

Я довольно конечно, это не должно быть голым, и это наша проблема.

12 ответов

если у вас нет действительно веской причины, я бы рекомендовал придерживаться того, как git любит работать. Если у вас есть несколько вещей для отслеживания, вам, вероятно, нужно несколько репозиториев!

просто клон тот же проект в другой папке и скопировать на .git/ папка с вашим проектом.

создать папку temp:

переключатель temp папку

клонировать тот же проект в temp:

переключитесь на свой проект и беги!—4—>

удалить на temp папка, если вы закончили.

надеюсь, что это поможет кому-то

явная установка GIT_DIR переменная среды заставляет git использовать данный каталог в качестве репозитория git. Он никогда не нужен во время нормальной пользы.

чтобы быть точным, невозможно клонировать пустые репозитории. Таким образом, пустой репозиторий-бесполезный репозиторий. Действительно, Вы обычно создаете пустой репозиторий и сразу же заполняете его:

однако git add невозможен при создании голого репозитория:

дает ошибку » fatal: Эта операция должна выполняться в рабочем дереве».

вы не можете проверить это:

надеюсь, что это может помочь U

в моем случае, я был в той же папке,».git » файл для моего РЕПО. Мне пришлось подняться на один уровень выше, это решило проблему.

я обнаружил это, потому что я использовал git графический интерфейс, который показал более подробное сообщение об ошибке:

fatal this operation must be run in a work tree как исправить. Смотреть фото fatal this operation must be run in a work tree как исправить. Смотреть картинку fatal this operation must be run in a work tree как исправить. Картинка про fatal this operation must be run in a work tree как исправить. Фото fatal this operation must be run in a work tree как исправить

та же проблема, которую я получил, я сделал следующие шаги,

Источник

git отсутствует дерево работы

Я получаю “ведущая ветвь” [удаленная отклоненная] в настоящий момент проверена “ошибка – по существу та же проблема, что и OP в этом сообщении (ошибка Git push” [удаленный отказ] master → master (ветвь в настоящий момент проверена) “), и следующее – это то, что я сделал до сих пор, чтобы исправить это, но теперь кажется, что у меня есть выбор между тем, что вышеупомянутая проблема или новая – ошибка “пропавшего дерева”, и, как объясняется ниже, это где я сейчас застрял.

Также обратите внимание, что неизбежно, что иногда могут быть прямые изменения в этих файлах каталога на сервере (хотя и с использованием Git), вместо того, чтобы быть перенесенными с локальной рабочей станции на сервер (удаленный).

Затем, поскольку все мои серверные файлы уже присутствовали (это не пустая директория), я сделал первоначальный коммит, используя этот метод (обычный):

Я могу нажать фиксации успешно, НО, если я попытаюсь применить это:

как предполагалось выше (предположительно, чтобы принять все коммиты и сбросить HEAD, чтобы включить все мои изменения?), я получаю следующую фатальную ошибку:

Нужно ли устанавливать рабочую строку в этот каталог? Если да, то как мне это сделать? И если я это сделаю, будет ли результат по-прежнему соответствовать моей заявленной цели (опять же, без отдельного голого и не-голого репозитория – только один каталог, который ТАКЖЕ обслуживает веб-сайт в реальном времени и находится в корневом каталоге сети)?

Есть ли что-то еще, что мне нужно сделать, чего я не хватает?

Вся помощь и комментарии получили высокую оценку. Спасибо!

Вы создали готический репозиторий git (который сам по себе не имеет рабочего дерева). Готический репозиторий git – это рекомендуемый способ перехода, когда вы хотите нажать изменения.

Это шаги для этой настройки:

Создайте каталог рабочего дерева, если он еще не существует.

Создайте следующий скрипт и скопируйте его в виде обложек-репо hooks/post-receive

Отметьте этот скрипт как исполняемый файл:

Ваша конфигурация должна выглядеть так: IMO:

Источник

I’m new to GIT. I create repository with commands:

then in the hooks directory, I create the post-receive file and add there:

after that, I add permissions: chmod +x post-receive

at my local machine in the laravel project directory I run:

after that usually:

but I got a message:

fatal this operation must be run in a work tree как исправить. Смотреть фото fatal this operation must be run in a work tree как исправить. Смотреть картинку fatal this operation must be run in a work tree как исправить. Картинка про fatal this operation must be run in a work tree как исправить. Фото fatal this operation must be run in a work tree как исправить

Why I got this error? What is a problem?

2 Answers 2

TL;DR: I think a mkdir step is missing from your Laravel setup instructions.

is meant for making server repositories in which no one will ever do any work.

Now, that might seem an odd thing to do: why create a repository where no one can work on the repository? And it is an odd thing to do, but it exists for a reason.

Bare vs non-bare repository

If you make a repository where you can work:

then you can work in it, but—to oversimplify a bit—no one else should ever just send you their work unannounced. But people also need to share work, and one common usage pattern is that everyone agrees that some work-sharing repository, over on some central server such as the corporate «master source repository» machine, should be the place to which everyone sends work.

At the same time, though, you don’t want to have to have someone who spends all day taking people’s work into that central repository. You want to let people send their work as soon as it’s ready, so that everyone else can go to the central repository to see (or even obtain and use) their work right away. So you need a place that peole can send their work, unannounced, right now.

This is really about the difference between a commit and a work-tree

Making a new commit makes a permanent and incorruptible 1 snapshot of your work. But it has to get this from somewhere. The minimum «somewhere» is found in other version control systems as the work-tree: the place you do your work. Git inserts an extra wrinkle here, and forces you to know about it: it adds the index, also called the staging area or sometimes the cache (three names for one thing—it’s a very important entity in Git!). The index and work-tree come as a pair, though: they’re where you can write things. Commits, once made, are entirely unchangeable, which is what makes them incorruptible. So you need a place to work, where you can both read and write files.

A bare repository holds commits—the read only snapshots—but has no work-tree. 2 That’s pretty much all there is to it: with no work-tree, there is no place to work. That’s what makes it suitable for pushing-to, but without a place to work, you can’t do any work in it. You’ll need a non-bare repository as well.

1 Commits are really only mostly permanent: they last as long as there are names by which one can find them. I’ll leave this detail for other tutorials. They are entirely incorruptible though, because the true name of a commit is its hash ID. The hash ID, while quite unpredictable in advance, is a cryptographic checksum of the contents of the commit. If something goes wrong and a commit becomes corrupted, Git will notice, because the contents won’t fit the true name hash ID any more.

2 For somewhat silly implementation reasons, a bare repository still has an index. It just has no work-tree. They’re paired—the index indexes (hence the name) the work-tree—but a bare repository typically still has a completely-empty index it carries around.

Some servers fake up a work-tree for a bare repository

. This temporary work-tree is the work-tree for the duration of the one git checkout command. (The index now indexes that temporary work-tree.) Then the git checkout finishes and the bare repository continues to have no work-tree. You still can’t work in it.

Источник

Почему я получаю сообщение «фатальный: эта операция должна выполняться в дереве работ?»

Затем я получаю сообщение об ошибке:

Я не уверен, что пошло не так, но в каталоге c: \ git есть файл конфигурации, в котором говорится:

Я почти уверен, что это не должно быть пустым, и это наша проблема.

Прямая причина ошибки в том, что да, невозможно использовать git-add с голым репозиторием. Чистый репозиторий по определению не имеет дерева работ. git-add берет файлы из рабочего дерева и добавляет их в индекс для подготовки к фиксации.

Если у вас нет действительно веской причины, я бы рекомендовал придерживаться того, как git любит работать. Если вам нужно отслеживать несколько вещей, вы, вероятно, захотите несколько репозиториев!

Это должно решить эту проблему:

Просто клонировать один и тот же проект в другую папку и скопировать в .git / папку для вашего проекта.

Создать временную папку:

переключиться во временную папку

клонировать тот же проект во временную папку:

переключитесь на свой проект и запустите git status

надеюсь, это кому-то поможет

Явная установка GIT_DIR переменной среды заставляет git использовать данный каталог в качестве репозитория git. Это никогда не понадобится при нормальном использовании.

Поскольку в чистом репозитории нет рабочего дерева, большой выбор команд не имеет смысла в чистом репозитории. git add всего один.

Создайте чистый репозиторий GIT

Небольшая напыщенная речь: git не может сам по себе создать нормальный пустой репозиторий. Действительно, глупый мерзавец.

Однако git add невозможно при создании чистого репозитория:

выдает ошибку «фатальная: эта операция должна выполняться в дереве работ».

Проверить это тоже нельзя:

Решение состоит в том, чтобы создать еще один репозиторий в другом месте, добавить файл в этот репозиторий и отправить его в чистый репозиторий.

надеюсь, это поможет тебе

fatal this operation must be run in a work tree как исправить. Смотреть фото fatal this operation must be run in a work tree как исправить. Смотреть картинку fatal this operation must be run in a work tree как исправить. Картинка про fatal this operation must be run in a work tree как исправить. Фото fatal this operation must be run in a work tree как исправить

В моем случае я находился в той же папке, что и файл «.git» для моего репо. Мне пришлось подняться на один уровень каталога вверх, это решило проблему.

Я получил эту ошибку, создав репозиторий Git на сетевом диске. Он работал нормально на одном компьютере, но возвращал эту ошибку на другом. Оказалось, что у меня диск был сопоставлен с буквой диска Windows на компьютере, на котором я его создал, но не на другом компьютере, и Git сохранил путь к рабочему дереву как сопоставленный путь, а не путь UNC.

Та же проблема, что и у меня, я сделал следующие шаги,

тогда он начинает работать.

Отредактировал файл конфигурации и изменил bare = true на bare = false

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *