GIT_DISCOVERY_ACROSS_FILESYSTEM не установлен


98

Я искал и читал несколько сообщений, но моя проблема не такая, как описано. Итак, вот проблема: использование git clone в папку под внешним разделом диска работает нормально, но все команды git не работают. не могу выполнить git status или git log ... Я всегда получаю ошибку

фатальный: не репозиторий git (или любой родительский объект до монтирования parent / home / kozi). Остановка на границе файловой системы (GIT_DISCOVERY_ACROSS_FILESYSTEM не установлен).

Пожалуйста, помогите мне ..

.
├── abi
├── bionic
├── загрузочный
├── build
├── cts
├── dalvik
├── разработка
├── устройство
├── docs
├── external
├── frameworks
├── gdk
├─ ─ оборудование
├── libcore
├── libnativehelper
├── ndk
├── пакеты
├──
pdk ├──
prebuilts ├──
.repo ├── sdk
├── system
└── tools


каков результат treeвнутри вашего репозитория git?
Chronial

хорошо, каков результат ls .git? Вы можете вставлять более длинные выходы на pastebin.com и ссылаться на них.
Chronial

pastebin имеет ограничения по размеру, я загрузил файл сюда
BB755

какой результат ls .git?
Хрониал,

@Chronial, вы имеете в виду вывод .git каждой вложенной папки в дереве? Или есть какой-то конкретный каталог, который вы хотите, чтобы я предоставил. В корневой папке я вижу только .repo и нет .git
BB755

Ответы:


140

Просто введите git initв командной строке и нажмите клавишу ВВОД. Затем снова запустите свою команду, возможно, вы уже работали git remote add origin [your-repository].

Это должно сработать, если нет, просто дайте мне знать.


Однако обратите внимание, что в описанном выше безумном сценарии параметр --force требовался для перестройки локального проекта и соответствующей удаленной ветви. Я смог сделать это безопасно: 1) создал ветку для локальной версии localRepo3 (после git init): git checkout -b local_version ; затем 2) установка ветки для отслеживания происхождения (ваша команда: git remote add origin [ваш-репозиторий] ); затем 3) git checkout remote_branch --force ; затем 4) слияние ветки local_version с удаленной веткой. Но git remote add origin [your-repository] все еще был героем здесь :)
Эндрю Фолкнер

GIT_DISCOVERY_ACROSS_FILESYSTEM не установлен - на героку.? Можете ли вы направить меня
Саджад Муртаза,

Вы получите ту же ошибку, если по какой-то причине файлы .git / index или .git / HEAD не доступны для записи самостоятельно. Верните их вам, и проблема исчезнет.
К. Келли

12

наткнулся на эту страницу, и некоторые из них говорили о сообщении GIT_DISCOVERY_ACROSS_FILESYSTEM not set. В моем случае наш системный администратор решил, что каталог apache2 должен находиться в смонтированной файловой системе на случай, если диск для сервера перестанет работать и его придется перестраивать. Я нашел это с помощью простой команды df:

-->  UBIk  <--:root@ns1:[/etc]
--PRODUCTION--(16:48:43)--> df -h
Filesystem                           Size  Used Avail Use% Mounted on
<snip>
/dev/mapper/vgraid-lvapache           63G   54M   60G   1% /etc/apache2
<snip>

Чтобы исправить это, я просто поместил следующее в оболочку пользователя root (так как они единственные, кому нужно просматривать версии etckeeper:

export GIT_DISCOVERY_ACROSS_FILESYSTEM=1

и все было хорошо ... много радости.

Дополнительные примечания:

-->  UBIk  <--:root@ns1:[/etc]
--PRODUCTION--(16:48:54)--> export GIT_DISCOVERY_ACROSS_FILESYSTEM=0

-->  UBIk  <--:root@ns1:[/etc]
--PRODUCTION--(16:57:35)--> git status
On branch master
nothing to commit, working tree clean

-->  UBIk  <--:root@ns1:[/etc]
--PRODUCTION--(16:57:40)--> touch apache2/me

-->  UBIk  <--:root@ns1:[/etc]
--PRODUCTION--(16:57:45)--> git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    apache2/me

nothing added to commit but untracked files present (use "git add" to track)

-->  UBIk  <--:root@ns1:[/etc]
--PRODUCTION--(16:57:47)--> cd apache2

-->  UBIk  <--:root@ns1:[/etc/apache2]
--PRODUCTION--(16:57:50)--> git status
fatal: Not a git repository (or any parent up to mount point /etc/apache2)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
-->  UBIk  <--:root@ns1:[/etc/apache2]
--PRODUCTION--(16:57:52)--> export GIT_DISCOVERY_ACROSS_FILESYSTEM=1

-->  UBIk  <--:root@ns1:[/etc/apache2]
--PRODUCTION--(16:58:59)--> git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    me

nothing added to commit but untracked files present (use "git add" to track)

Надеюсь, это поможет кому-нибудь где-нибудь ... -wc


6

Для полного принятого ответа была такая же проблема. Сначала указал пульт

git remote add origin https://github.com/XXXX/YYY.git

git fetch 

Тогда получите код

git pull origin master

1

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

sudo cp -r original_repo backup_repo
cd backup_repo
git status
fatal: Not a git repository (or any parent up to mount point /data)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

Я пробовал, git initкак предлагал какой-то ответ, но это не сработает.

sudo git init
Reinitialized existing Git repository in /data/HQ/SC_Educations/hq_htdocs/HQ_Educations_bak/.git/

Решил, сменив владельца репо

sudo chown -R www:www ../backup_repo
git status
# On branch develop
nothing to commit, working directory clean

0

Проверьте, действительно ли вы находитесь в репозитории github.

Итак, листинг .git / должен дать вам результаты ... в противном случае вы можете быть на каком-то уровне за пределами вашего репо.

Теперь перейдите к своему репо, и все готово.


0

Короче говоря, git пытается получить доступ к репо, которое он рассматривает в другой файловой системе, и чтобы явно сказать ему, что вы в порядке с этим, вы должны установить переменную среды GIT_DISCOVERY_ACROSS_FILESYSTEM = 1

Я работаю в среде CI / CD и использую dockerized git, поэтому мне нужно установить его в этой среде docker run -e GIT_DISCOVERY_ACROSS_FILESYSTEM=1 -v $(pwd):/git --rm alpine/git rev-parse --short HEAD\'

Если вам интересно: выше монтирует $ (pwd) в контейнер git docker и передает команду «rev-parse --short HEAD» в команду git в контейнере, которая затем запускается для этих смонтированных томов.


-1

Я считаю, что для исходного кода Android с репо вам следует использовать REPO. если вы действительно хотите использовать git, вы должны знать, есть ли у проекта каталог .git с ls -a. Или вам нужно войти в каталог подпроекта, который должен включать .git.


-1

Проблема в том, что вы находитесь в неправильном каталоге. Простое исправление в Jupyter - выполнить следующую команду:

  1. Перейдите в каталог GitHub для вашей установки
  2. Запустите команду GitHub

Вот пример команды для использования в Jupyter:

%%bash
cd /home/ec2-user/ml_volume/GitHub_BMM
git show

Обратите внимание, что вам нужно выполнять команды в одной ячейке.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.